如何在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之间是双倍的。
- SDK Manager中的Android 4.4W(API20)和Android L(API20,L Preview)有什么区别?
- NameNotFoundException webview
- Android Studio – 棒棒糖,ADB和Genymotion问题:设备不会显示。 “adb服务器已过期。 杀……”
- android棒棒糖工具栏:如何在滚动时隐藏/显示工具栏?
- 什么是java.lang.Object中的“shadow $ _klass_”和“shadow $ _monitor_”variables?
- 如何获取TopActivity名称或获取棒棒糖当前运行的应用程序包名称?
- 清单合并失败:uses-sdk:minSdkVersion 14
- 如何实施Android棒棒糖应用程序的第一个启动教程:像表格,幻灯片应用程序?
- Action Bar(工具栏)图标在新的Android Material Design中应该有多大?