为了账号安全,请及时绑定邮箱和手机立即绑定

如何强制操作栏位于ICS的底部?

/ 猿问

如何强制操作栏位于ICS的底部?

慕婉清6462132 2019-12-26 14:16:57

冰淇淋三明治(Android 4.0)增加了Action Bar在手机屏幕底部显示的选项,这是我在我的应用程序中希望拥有的。该文档uiOptions="splitActionBarWhenNarrow"在顶部提到您想要的东西(即选项卡),在Action Bar底部提到快捷方式。我已经尝试按照文档中的描述将行添加到应用程序清单中,但到目前为止还没有奏效。

另外,我注意到在运行ICS的Galaxy Nexus上,消息传递应用程序Action Bar位于底部,而标题仅位于顶部,因此必须有可能以某种方式强制将Action Bar其置于底部。


有任何想法吗?


查看完整描述

3 回答

?
潇湘沐

我已经尝试按照文档中的描述将行添加到应用程序清单中,但到目前为止还没有奏效。


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


<?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上,消息传递应用程序的底部具有操作栏,而标题仅位于顶部,因此必须可以以某种方式强制将操作栏置于底部。


如果您指的是对话列表,则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);

}


查看完整回答
反对 2019-12-26
?
慕斯王

我正在使用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">


查看完整回答
反对 2019-12-26
?
凤凰求蛊

再次返回最佳结果:)。您需要做的第一件事是创建一个布局名称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并创建此方法。


    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 Activity并运行您的应用程序:)。


现在您有了带有分隔线和图像PS的自定义ActionBar,分隔线在布局中定义为图像背景:)。


查看完整回答
反对 2019-12-26

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信