如何将菜单和设置选项添加到Android的自定义标题栏?

我的要求是增加标题栏的高度,但是我不确定这是否可行。 如果是这样,我怎么能增加它的高度,所以我会有更多的空间。 如果不是,我需要添加一个菜单选项(汉堡风格)到我的自定义标题栏。

custom_title_bar.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/title_bar" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#77b48e" android:gravity="center_vertical" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/imageView1" android:layout_width="29dp" android:layout_height="28dp" android:maxWidth="1dp" android:src="@drawable/logo" /> <TextView android:id="@+id/title_bar_viewname" android:layout_width="wrap_content" android:layout_height="16dp" android:layout_weight="0.07" android:text="@string/app_name" android:textColor="@android:color/white" android:textSize="10sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > </LinearLayout> </LinearLayout> 

MainActivity.java

 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.activity_main); getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_bar); } 

Solutions Collecting From Web of "如何将菜单和设置选项添加到Android的自定义标题栏?"

  1. 像这样改变你的MainActivity.java

     public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().requestFeature(Window.FEATURE_ACTION_BAR); setContentView(R.layout.activity_main); actionBar = getActionBar(); ColorDrawable colorDrawable = new ColorDrawable( Color.parseColor("#373836")); actionBar.setBackgroundDrawable(colorDrawable); } 

    例如:现在你的动作栏会显示如下:

    在这里输入图像说明

  2. 然后,如果您需要在操作栏中添加setting menu项。

    MainActivity中添加以下代码,java

     @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) { switch (item.getItemId()) { case R.id.search: //your code here return true; default: return super.onOptionsItemSelected(item); } } 

    然后在res / menu / main.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" > <item android:id="@+id/search" android:icon="@drawable/ic_action_settings" android:showAsAction="always" android:title="text"/> </menu> 

    现在,您可以在操作栏中看到设置图标

    在这里输入图像说明

  3. 最后如果你必须增加操作栏高度

    清单中

     <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > --->set a theme ... </application> 

    然后在Styles.xml中

     <resources> <style name="AppBaseTheme" parent="android:Theme.Light"></style> <style name="AppTheme" parent="AppBaseTheme"> <item name="android:actionBarSize">80dip</item> </style> </resources> 

    现在动作栏大小增加到我们在样式中给出的大小。

    在这里输入图像说明

随着Android L的发布,新的视图已经发布:工具栏。 工具栏给你更多的灵活性,风格的行动吧。 它也可以通过appCompat库更低的Android版本。

在这个版本中,Android引入了一个新的工具栏小部件。 这是Action Bar模式的一个泛化,它给了你更多的控制和灵活性。 工具栏就像任何其他视图一样,使您可以更轻松地与其他视图交互,为其设置animation效果,并对滚动事件做出反应。 您也可以将其设置为您的活动的操作栏,这意味着您的标准选项菜单操作将显示在其中。

您可以使用工具栏更改操作栏的高度,并将layout_height属性设置为所需的高度。

有关如何使用它的更多信息:

http://android-developers.blogspot.be/2014/10/appcompat-v21-material-design-for-pre.html

文档:

http://developer.android.com/reference/android/widget/Toolbar.html