我正在使用Sherlock库,我也自己实现.我的问题是我在菜单中添加了两个项目,现在我想要在操作栏左侧有1个项目,在操作栏右侧需要第二个项目.怎么样?
Tom*_*mik 27
您可以创建此类操作栏,但它比夸大菜单要复杂一些.在onCreateOptionsMenu()方法中创建的菜单将始终对齐,放置在拆分操作栏中或隐藏在菜单键下.
如果您希望操作栏只包含两个菜单项 - 一个位于左边缘而另一个位于右边缘 - 则必须在操作栏中创建自定义视图.
自定义视图布局将是这样的:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageButton android:src="@drawable/ic_menu_item1"
android:background="?attr/actionBarItemBackground"
android:layout_width="?attr/actionBarSize"
android:layout_height="match_parent"
android:scaleType="centerInside"
android:id="@+id/item1"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"/>
<ImageButton android:src="@drawable/ic_menu_item2"
android:background="?attr/actionBarItemBackground"
android:layout_width="?attr/actionBarSize"
android:layout_height="match_parent"
android:scaleType="centerInside"
android:id="@+id/item2"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
在主题中定义要使用自定义视图.主题应包含:
<style name="MyTheme" parent="@style/Theme.Sherlock">
<item name="actionBarStyle">@style/MyActionBarStyle</item>
<item name="android:actionBarStyle">@style/MyActionBarStyle</item>
</style>
<style name="MyActionBarStyle" parent="@style/Widget.Sherlock.ActionBar">
<item name="displayOptions">showCustom</item>
<item name="android:displayOptions">showCustom</item>
</style>
Run Code Online (Sandbox Code Playgroud)
在活动(或片段)中设置自定义视图:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar ab = getSherlock().getActionBar();
LayoutInflater li = LayoutInflater.from(this);
View customView = li.inflate(R.layout.my_custom_view, null);
ab.setCustomView(customView);
ImageButton ibItem1 = (ImageButton) customView.findViewById(R.id.item1);
ibItem1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// ...
}
});
ImageButton ibItem2 = (ImageButton) customView.findViewById(R.id.item2);
ibItem2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// ...
}
});
}
Run Code Online (Sandbox Code Playgroud)
您必须为菜单项添加单击侦听器.onOptionsItemSelected()在这种情况下你不能使用.
除了Tomik的回答.你需要添加
ab.setDisplayShowCustomEnabled(true);
Run Code Online (Sandbox Code Playgroud)
在onCreate方法中,否则不会出现自定义视图(至少对我而言).
| 归档时间: |
|
| 查看次数: |
34449 次 |
| 最近记录: |