如何强制Action Bar位于ICS的底部?

Mic*_*Bak 42 android android-4.0-ice-cream-sandwich android-actionbar

冰淇淋三明治(Android 4.0)增加了Action Bar在手机上屏幕底部的选项,这是我喜欢在我的应用程序中使用的东西.该文件提到uiOptions="splitActionBarWhenNarrow"的,当你想要的东西,也就是选项卡,在顶部和Action Bar快捷键在底部.我已经尝试在应用程序清单中添加该行,如文档中所述,但到目前为止尚未使用它.

这是一个例子:

在此输入图像描述

此外,我注意到在运行ICS的Galaxy Nexus上,消息传递应用程序Action Bar的底部只有顶部的标题,因此必须以某种方式强制Action Bar它位于底部.

有任何想法吗?

Com*_*are 28

我已经尝试在应用程序清单中添加该行,如文档中所述,但到目前为止尚未使用它.

这个示例项目中,它对我有用.这是清单:

<?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>
Run Code Online (Sandbox Code Playgroud)

此外,我注意到在运行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);
}
Run Code Online (Sandbox Code Playgroud)


gak*_*gak 12

我正在使用ActionBarSherlock,我遇到了类似的问题.我通过把解决它android:uiOptions="splitActionBarWhenNarrow"的内部<activity>标签,而不是 <application>标签.

例如,这有效:

<activity android:name=".my.Activity" 
          android:uiOptions="splitActionBarWhenNarrow"/>
Run Code Online (Sandbox Code Playgroud)

这不起作用:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.slowchop.etc"
          android:uiOptions="splitActionBarWhenNarrow">
Run Code Online (Sandbox Code Playgroud)

  • 这几乎肯定不能解决它,虽然我没有很好的解释为什么这甚至会产生影响.您是否尝试将应用切换到横向模式?鉴于有足够的空间,你的底栏现在可能会出现在顶部.一个简单的例子是ActionBarSherlock示例应用程序.它在活动上声明`splitActionBarWhenNarrow`,但仅在纵向模式下它实际显示在屏幕的底部. (2认同)