如何强制行动栏在ICS的底部?

冰淇淋三明治(Android 4.0)增加了手机屏幕底部的Action Bar的选项,这是我喜欢在我的应用程序的东西。 文档提到uiOptions="splitActionBarWhenNarrow" ,当你想要的东西,即标签,顶部和Action Bar快捷方式在底部。 我已经尝试在应用程序清单中添加行,如文档中所述,但迄今为止还没有工作。

这是一个例子:

在这里输入图像描述

另外,我注意到在运行ICS的Galaxy Nexus上,消息传递应用程序的底部有Action Bar ,除了顶部的标题外,所以必须可以强制Action Bar在最下面。

有任何想法吗?

我已经尝试在应用程序清单中添加行,如文档中所述,但迄今为止还没有工作。

它在这个示例项目中为我工作 。 这是清单:

 <?xml version="1.0" encoding="utf-8"?> <manifest package="com.commonsware.android.actionbarbc" xmlns:android="http://schemas.android.com/apk/res/android"> <application android:hardwareAccelerated="true" android:icon="@drawable/cw" android:label="@string/app_name"> <activity android:label="@string/app_name" android:name=".InflationDemo" android:uiOptions="splitActionBarWhenNarrow"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="11" /> <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:xlargeScreens="true" /> </manifest> 

另外,我注意到在运行ICS的Galaxy Nexus上,消息传递应用程序的底部有Action Bar,除了顶部的标题外,所以必须可以强制Action Bar在最下面。

如果您指的是会话列表,那就是顶部和底部的ActionBar ,使用splitActionBarWhenNarrow和以下设置代码:

 private void setupActionBar() { ActionBar actionBar = getActionBar(); ViewGroup v = (ViewGroup)LayoutInflater.from(this) .inflate(R.layout.conversation_list_actionbar, null); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM, ActionBar.DISPLAY_SHOW_CUSTOM); actionBar.setCustomView(v, new ActionBar.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT, Gravity.CENTER_VERTICAL | Gravity.RIGHT)); mUnreadConvCount = (TextView)v.findViewById(R.id.unread_conv_count); } 

我使用的是ActionBarSherlock,而且我有类似的问题。 我通过将android:uiOptions="splitActionBarWhenNarrow"放在<activity>标签中,而不是<application>标签来解决这个问题。

例如,这工作:

 <activity android:name=".my.Activity" android:uiOptions="splitActionBarWhenNarrow"/> 

这不起作用:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.slowchop.etc" android:uiOptions="splitActionBarWhenNarrow"> 

编辑这里是图像:)。 InstaGram ActionBar +底部栏

回到最好的结果:)。 首先你需要做的是创build一个名为header.xml的布局

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="@dimen/action_bar_height" android:layout_gravity="top" android:baselineAligned="true" android:orientation="horizontal" > <ImageView android:id="@+id/share" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="start" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/action_bar_glyph_back" /> <ImageView android:id="@+id/bright" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/action_bar_glyph_lux" /> <ImageView android:id="@+id/rotate" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/rotate" /> <ImageView android:id="@+id/bright" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/action_bar_glyph_lux" /> <ImageView android:id="@+id/rotate" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/rotate" /> <ImageView android:id="@+id/forwa" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/forward" /> </LinearLayout> 

之后去到你的MainActivity.class并创build这个方法。

  private void setupActionBar() { ActionBar actionBar = getActionBar(); //actionBar.setDisplayShowHomeEnabled(false); actionBar.setDisplayShowTitleEnabled(false); ViewGroup v = (ViewGroup)LayoutInflater.from(this) .inflate(R.layout.header, null); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM, ActionBar.DISPLAY_SHOW_CUSTOM); actionBar.setCustomView(v, new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.WRAP_CONTENT, Gravity.CENTER_VERTICAL | Gravity.RIGHT)); } 

添加setupActionBar(); 到你的onCreate活动并运行你的应用程序:)。

现在你有自定义的动作条与分频器和图像PS的分配器在布局中定义为图像背景:)。

好吧,你不能强迫停留在平板电脑的底部,但如果电话是的,你可以通过清单来做到这一点。 但是你可以做一些类似于底部栏和顶部栏的东西。 将在这个例子中,我会告诉你如何使用合并做到这一点,而不需要使用Android的ActionBar。

首先你需要创build的是main_activity.xml在我的情况下, main_activity.xml只包含RelativeLayout上的ImageView 。 这里是代码。

 <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=".MainActivity" > <RelativeLayout android:id="@+id/RelativeLayout04" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true"> <include layout="@layout/header" /> </RelativeLayout> <ImageView android:id="@+id/view" android:layout_width="match_parent" android:layout_height="200dp" android:layout_above="@+id/RelativeLayout03" android:layout_below="@+id/RelativeLayout04" android:layout_centerHorizontal="true" android:src="@android:drawable/alert_dark_frame" /> <RelativeLayout android:id="@+id/RelativeLayout03" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true"> <include layout="@layout/tryit" /> </RelativeLayout> 

就像你在上面的代码中看到的那样,我把两个合并放在main_activity.xml一个定义在底部,一个定义在顶部。 这里是假底栏xml。

 <merge xmlns:android="http://schemas.android.com/apk/res/android"> <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="match_parent" android:layout_height="80dp" android:layout_weight="0.14" android:background="@drawable/dock" > <ImageView android:id="@+id/dark" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.14" /> <ImageView android:id="@+id/stock" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.14" /> <ImageView android:id="@+id/open" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.14" /> <ImageView android:id="@+id/border" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.15" /> <ImageView android:id="@+id/color" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.15" /> </LinearLayout> 

我把一个固定的背景LinearLayout和伪造的ImageView onClicks。

这里是顶尖的酒吧。 `

 <LinearLayout android:id="@+id/LinearLayout02" android:layout_width="match_parent" android:layout_height="40dp" android:layout_weight="0.14" android:background="@drawable/dock1" android:layout_gravity="top"> <ImageView android:id="@+id/darka" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.14" /> <ImageView android:id="@+id/stocka" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.14" /> <ImageView android:id="@+id/opena" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.14" /> <ImageView android:id="@+id/bordera" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.15" /> <ImageView android:id="@+id/colora" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.15" /> </LinearLayout> 

`

其中也从上面的底部栏复制粘贴。 只需从android:layout_alignParentBottom="true"将一个东西更改为android:layout_alignParentTop="true" ,然后在底部和顶部就有了一个android:layout_alignParentTop="true" 。 在这种情况下,你不会需要使用ActionBar所以我build议你使用Theme.Holo.NoActionBar

这里是图像结果: – http://i.imgur.com/N8uKg6v.png

这是我正在从事的项目。 完成了几乎所有的事情,但仍然与devise挣扎。 希望我的回答有益于你。 如果您觉得有趣,请回答问题。
最好的祝福。 〜信贷基金

尝试这个…

 private View contentView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); contentView = getLayoutInflater().inflate(R.layout.activity_main, null); setContentView(contentView); LinearLayout layout = (LinearLayout) contentView.getParent().getParent(); View view = layout.getChildAt(0); layout.removeViewAt(0); layout.addView(view); }