我的ActionBar有自定义布局。它是一个LinearLayout,带有一个带有今天日期的TextView。 TextView完全以4.0+设备为中心,甚至在3.0模拟器上也是如此。但它在3.2仿真器中稍微偏离中心:
我在我的主要活动中这样做:
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置于其中。
答案 0 :(得分:0)
最简单的解决方案是使用相对布局并将centerInParent =“true”添加到textview。