如何在Android中的ToolBar中添加button,如刷新和search?

在这里输入图像说明

我做了一个工具栏,但是当我在menu.xml中添加菜单项时,它总是显示为溢出。 我如何分别添加它? 此外标题显示在中间(垂直),如何显示在顶部?

menu.xml文件

<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context="com.example.toolbar.MainActivity" > <item android:id="@+id/action_search" android:icon="@drawable/ic_launcher" android:title="@string/action_search" android:showAsAction="ifRoom" android:orderInCategory="1" android:menuCategory="secondary"/> <item android:id="@+id/action_settings" android:orderInCategory="100" android:title="@string/action_settings" app:showAsAction="never"/> </menu> 

MainActivity.java

 package com.example.toolbar; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.Toolbar; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar); setSupportActionBar(toolbar); // toolbar.setNavigationIcon(R.drawable.back); toolbar.setLogo(R.drawable.ic_launcher); //toolbar.setTitle("Title"); // toolbar.setSubtitle("Subtitle"); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } } 

activity_main.xml中

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.toolbar.MainActivity" > <android.support.v7.widget.Toolbar xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/my_awesome_toolbar" android:layout_width="fill_parent" android:layout_height="128dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:background="?attr/colorPrimary" android:minHeight="?attr/actionBarSize" app:theme="@style/ActionBarThemeOverlay"> </android.support.v7.widget.Toolbar> </RelativeLayout> 

好的,我得到的图标,因为我在menu.xml中编写android:showAsAction="ifRoom"而不是app:showAsAction="ifRoom"因为我使用的是v7库。

不过标题正在扩展工具栏的中心。 如何使它出现在顶部?

尝试做到这一点:

 getSupportActionBar().setDisplayShowTitleEnabled(false); getSupportActionBar().setDisplayHomeAsUpEnabled(false); getSupportActionBar().setDisplayShowTitleEnabled(false); 

如果你制作了自定义的工具栏(我认为你做了),那么你可以使用最简单的方法来做到这一点:

 toolbarTitle = (TextView)findViewById(R.id.toolbar_title); toolbarSubTitle = (TextView)findViewById(R.id.toolbar_subtitle); toolbarTitle.setText("Title"); toolbarSubTitle.setText("Subtitle"); 

您也可以将其他视图放在工具栏中。 希望能帮助到你。

在顶部添加这一行:

"xmlns:app="http://schemas.android.com/apk/res-auto"

然后使用:

app:showasaction="ifroom"

要控制标题的位置,您可能需要设置一个自定义字体(如twaddington所示): 链接

然后,重新定位文本的位置,在updateMeasureState()您将添加p.baselineShift += (int) (p.ascent() * R); 同样在updateDrawState()添加tp.baselineShift += (int) (tp.ascent() * R); 其中R在-1和1之间是双倍的。