首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android layout_gravity 不生效?父佈局必須為 LinearLayout 或使用 gravity

     編輯:程式設計綜合問答

現象

Button 設定 android:layout_gravity="center" 但不置中,且 Eclipse 提示無此屬性。

原因

layout_gravity 屬於 LinearLayout.LayoutParams,**只有在 LinearLayout 子視圖時才生效**。若父佈局為 RelativeLayout、FrameLayout、ConstraintLayout 等,會被忽略。

解決方法

方法一:父佈局改為 LinearLayout

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <Button
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="test" />
</LinearLayout>

方法二:改用 android:gravity(針對視圖內容置中)

若 Button 本身寬度為 match_parent,想讓**文字**置中:

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="test" />

方法三:RelativeLayout 使用 layout_centerInParent

<RelativeLayout ...>
    <Button
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="test" />
</RelativeLayout>

屬性對照表

屬性作用對象生效條件
layout_gravity子視圖在父佈局中的位置父佈局為 LinearLayout
gravity視圖內容(文字、子元素)位置視圖本身(如 Button、TextView、LinearLayout)
layout_centerInParent子視圖置中於父佈局父佈局為 RelativeLayout
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved