Android中的自定义ActionBar标题不居中?

时间:2014-06-17 17:23:33

标签: android android-layout android-actionbar

我的ActionBar有自定义布局。它是一个LinearLayout,带有一个带有今天日期的TextView。 TextView完全以4.0+设备为中心,甚至在3.0模拟器上也是如此。但它在3.2仿真器中稍微偏离中心:

screenshot

我在我的主要活动中这样做:

getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
getActionBar().setCustomView(R.layout.actionbar_custom);
dateTextView = (TextView) findViewById(R.id.dateTextView);

这里是actionbar_custom.xml:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:layout_gravity="center"
    android:gravity="center_vertical|center_horizontal" >

    <TextView 
        android:id="@+id/dateTextView"      
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center"
        android:gravity="center_vertical|center_horizontal" />

</LinearLayout>

看起来溢出按钮占用了布局空间,可能是日期不居中的原因。但是在我的4.0+设备上,溢出图标存在,但日期完全居中,所以我很困惑。

更新:

我想我找到了问题的根源。我在我的Application类中使用变通方法强制溢出按钮出现在具有菜单键的设备上:

try 
{
    ViewConfiguration config = ViewConfiguration.get(this);
    Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
    if(menuKeyField != null) 
    {
        menuKeyField.setAccessible(true);
        menuKeyField.setBoolean(config, false);
    }
} 
catch (Exception ex) 
{
    // Ignore
}

这似乎是强制溢出图标出现在自己的布局中。

有没有办法将TextView放在ActionBar的整体父布局中?这样我就可以将TextView置于其中。

1 个答案:

答案 0 :(得分:0)

最简单的解决方案是使用相对布局并将centerInParent =“true”添加到textview。