ActionBar actionBar = getActionBar();
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
actionBar.setCustomView(R.layout.myLayout);
...
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.myMenu, menu);
menuBar = menu;
return true;
}
myLayout.xml
< RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_centerInParent="true"
android:src="@drawable/myImage" />
</RelativeLayout>
myMenu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menuItem1"
android:icon="@drawable/icon1"
android:showAsAction="always"
android:visible="false"
android:title="@string/menu1">
</item>
<item
android:id="@+id/menuItem2"
android:icon="@drawable/icon2"
android:showAsAction="always"
android:title="@string/menu2">
</item>
</menu>
我有一个自定义视图,用于将图像放在ActionBar
的中心。但是,当我将MenuItem
放在ActionBar
上时,图像会被推到左侧。我不知道如何使图像居中或填充RelativeLayout
以获取整个ActionBar
宽度。我尝试了很多不同的东西,但到目前为止我没有运气。任何帮助将不胜感激。
答案 0 :(得分:1)
将自定义视图添加到ActionBar后,您可以为View
设置自定义ActionBar.LayoutParams。
要执行您要执行的操作,您可以将代码更改为:
mLayout.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/myImage" />
</LinearLayout>
在onCreate(Bundle b)
:
public void setUpActionBar(){
View view = getLayoutInflater().inflate(R.layout.mLayout);
ActionBar.LayoutParams lp = new ActionBar.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.CENTER);
final ActionBar bar = getActionBar();
bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
bar.setCustomView(view, lp);
}