我在 Android 4.0 以下的设备中遇到了问题,ActionBarSherlock 中的按钮有时无法垂直居中。这发生在运行 Android 2.3.6 的设备上,不会影响任何运行 4.0+ 的设备
我在 ActionBarSherlock 上做了一个非常简单的自定义布局,其自定义布局结构显示在下面的 XML 中
无法垂直居中按钮的布局:
<Button
android:id="@+id/button_action_next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="@color/people_app_theme_color"
android:gravity="center"
android:text="NEXT"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@android:color/white" />
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:gravity="center"
android:orientation="horizontal" >
<ImageButton
android:id="@+id/button_action_home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@color/people_app_theme_color"
android:gravity="center"
android:maxHeight="30dp"
android:src="@drawable/android_home"
android:text="HOME"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@android:color/white" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:minHeight="48dp"
android:text="TextView"
android:textColor="@android:color/white" />
</LinearLayout>
<Button
android:id="@+id/button_action_prev"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:background="@color/people_app_theme_color"
android:gravity="center"
android:text="PREV"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@android:color/white" />
而且我根本无法获得按钮(button_action_next
并且button_action_prev
在操作栏中垂直居中)
我得到这样的结果:
然而,在同一个应用程序中,我有另一个 ActionBarSherlock 的自定义布局,它可以奇怪地使按钮垂直居中非常好。这个自定义布局的布局是这样的:
可以垂直居中按钮的布局:
<Button
android:id="@+id/button_actionbar_done"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="@color/people_app_theme_color"
android:gravity="center"
android:text="DONE"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@android:color/white" />
<Button
android:id="@+id/button_actionbar_skip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:background="@color/people_app_theme_color"
android:gravity="center"
android:text="SKIP"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@android:color/white" />
<TextView
android:id="@+id/text_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button_actionbar_skip"
android:layout_alignBottom="@+id/button_actionbar_skip"
android:layout_centerHorizontal="true"
android:text="ENTER YOUR DETAILS"
android:textColor="@android:color/white" />
工作布局和非工作布局之间的唯一区别是不能居中按钮的布局中有一个子LinearLayout
元素。
所以我的问题是,如何确保按钮在任何情况下都垂直居中(避免屏幕截图中显示的结果)?
更新:我试过的
感谢@nicopico 的评论和这篇SO 帖子:Gravity and layout_gravity on Android。我已经应用layout_gravity="center"
到我的布局,但按钮仍然没有垂直居中。