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"
しましたが、ボタンがまだ垂直方向の中央に配置されていません。