我正在尝试制作一个分割菜单(带有sherlock或没有),但我仍然没有成功。
public class MainActivity extends SherlockFragmentActivity {
ActionBarSherlock mSherlock = ActionBarSherlock.wrap(this);
...............
mSherlock.setUiOptions(ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW);
mSherlock.setContentView(R.layout.activity_main);
...............
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//Used to put dark icons on light action bar
boolean isLight = false;
menu.add("You")
.setTitle("You")
.setIcon(isLight ? R.drawable.icon_you : R.drawable.icon_you)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
menu.add("Pet Open")
.setIcon(isLight ? R.drawable.icon_pet_open : R.drawable.icon_pet_open)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
menu.add("Around")
.setIcon(isLight ? R.drawable.icon_around : R.drawable.icon_around)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
return true;
}
因此我获得了3个没有标题和默认背景的小图标,我不知道如何更改。这就是我想要的:
如何在不影响顶层菜单的情况下添加自定义底部菜单?
这是我发现的:
implement split menu from manifest(我不认为这会让我有机会改变我想要的任何东西)
using layout params - 看起来它无法正常工作。
实现此菜单的最佳方式是什么?
UPDATE here is one more way i found:好消息是我可以看到如何改变它,但不好的是它在顶部和底部使用相同的背景。底部,我不确定我是否可以改变它。
答案 0 :(得分:1)
2个选项:
1)您可以在清单中设置标记(或者按照上面的编程方式设置)以分割ActionBar
,但这仅适用于您在电话大小的设备上的纵向,即使这样仍有ActionBar
出现在顶部,但将前几个ActionItem
移到底部。对于大多数情况来说这没什么问题,但听起来你总是说你总是希望这个底部显示,你将使用的系统菜单没有能力达到你想要的程度。
2)为屏幕底部制作自己的布局,以创建您正在谈论的样式菜单。这可能有效:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:orientation="vertical" >
<!-- this is where the Activity contents go -->
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_alignParentBottom="true"
android:background="#8f8"
android:orientation="horizontal" >
<!-- this is the green bottom bar -->
</LinearLayout>
<LinearLayout
android:layout_width="48dp"
android:layout_height="70dp"
android:layout_alignParentBottom="true"
android:layout_alignParentleft="true"
android:layout_margin="5dp"
android:orientation="vertical" >
<!-- This is the status button -->
<ImageView
android:layout_width="48dp"
android:layout_height="40dp"
android:background="#00f" />
<TextView
android:layout_width="48dp"
android:layout_height="wrap_content"
android:padding="4dp"
android:text="Status"
android:textAlignment="center"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:layout_width="60dp"
android:layout_height="70dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_margin="5dp"
android:orientation="vertical" >
<!-- This is the Pet Open button -->
<ImageView
android:layout_width="60dp"
android:layout_height="40dp"
android:background="#00f" />
<TextView
android:layout_width="60dp"
android:layout_height="wrap_content"
android:padding="4dp"
android:text="Pet Open"
android:textAlignment="center"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:layout_width="60dp"
android:layout_height="70dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_margin="5dp"
android:orientation="vertical" >
<!-- This is the Refresh button -->
<ImageView
android:layout_width="60dp"
android:layout_height="40dp"
android:background="#00f" />
<TextView
android:layout_width="60dp"
android:layout_height="wrap_content"
android:padding="4dp"
android:text="Refresh"
android:textAlignment="center"
android:textSize="12sp" />
</LinearLayout>
</RelativeLayout>
这适用于3个按钮,通过一系列调整使其风格更接近您想要的样式。如果您希望在底部显示3个以上,并且您想使用提供的MenuItem
,则可以在onPrepareOptionsMenu()
中在运行时确定所有这些,并动态更改上面版本的布局。这将是更多的工作,但可能更多你正在寻找。