2017-10-15 93 views
1

已經尋找一個解決方案第一(例如here)我來到了以下解決方案:如何在RelativeLayout中水平居中按鈕?

android:layout_centerHorizontal="true" 

不爲我工作(見第三個按鈕)。下面是RelativeLayout中三個按鈕的完整示例代碼,其中中間按鈕應居中(按鈕爲水平和垂直),另兩個按鈕應該對稱放置在屏幕上,水平居中。但是,他們不是,使用我多次發現的建議解決方案。

那麼我錯過了什麼?

全碼:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/checkscreen" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context="com.impyiablue.checkpoint.CheckScreen"> 

    <RelativeLayout 
     android:id="@+id/content" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_marginTop="20dp" 
     android:layout_weight="1" 
     android:orientation="vertical"> 


     <Button 
      android:id="@+id/check_cancel" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/check_next" 
      android:textSize="20sp" 
      android:padding="25dip" 
      android:layout_alignParentTop="true" 
      android:layout_alignLeft="@+id/check_now" 
      android:layout_alignStart="@+id/check_now" 
      android:layout_marginTop="50dp" /> 

     <Button 
      android:id="@+id/check_now" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:text="@string/check_now" 
      android:padding="70dip" 
      android:textSize="20sp" /> 

     <Button 
      android:id="@+id/check_redo" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true" 
      android:text="@string/check_redo" 
      android:textSize="20sp" 
      android:padding="25dip" 
      android:layout_alignParentBottom="true" 
      android:layout_alignLeft="@+id/check_now" 
      android:layout_alignStart="@+id/check_now" 
      android:layout_marginBottom="50dp" /> 

    </RelativeLayout> 


</LinearLayout> 

Screenshot

+0

可能'android:layout_alignLeft'與'android:layout_centerHorizo​​ntal'發生衝突。如果你想中心水平爲什麼仍然使用佈局對齊? – nhoxbypass

回答

2

`

<Button 
      android:id="@+id/check_redo" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true" 
      android:text="@string/check_redo" 
      android:textSize="20sp" 
      android:padding="25dip" 
      android:layout_alignParentBottom="true" 
      android:layout_marginBottom="50dp" /> 

` 你可以嘗試使用的RelativeLayout作爲根佈局,這會讓事情變得更容易管理。

+0

好的建議,但這並不能解決我的實際問題... – Alex

+0

這是因爲你定義了一些屬性到其他按鈕,即你使用相對定位,將它們移除它將工作, – himel

+0

0

我會建議你使用weightSum和layout_weight屬性來水平創建3個按鍵,只顯示中間的一個由另2施加無形的知名度(第一和最後一個)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/checkscreen" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal" android:weightSum="9"> 
<Button android:layout_width="wrap_content" 
android:layout_height="match_parent" android:layout_weight="3" android:visibility="invisible"></Button> 
<Button android:layout_width="wrap_content" 
android:layout_height="match_parent" android:layout_weight="3" android:visibility="visible"></Button> 
<Button android:layout_width="wrap_content" 
android:layout_height="match_parent" android:layout_weight="3" android:visibility="invisible"></Button> 
</LinearLayout> 

請添加任何必要的參數這段代碼只是爲了證明這個想法。

0

在該button上使用android:layout_gravity=center。實施例 -

<Button 
      android:id="@+id/check_cancel" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/check_next" 
      android:textSize="20sp" 
      android:padding="25dip" 
      android:layout_gravity=center 
      android:layout_marginTop="50dp" /> 

或者居中一個parentview或佈局的所有子視圖的對準,只是上

0

佈局這樣應該使用的LinearLayout,因爲它支持重量,同時RelativeLayout的沒有按」進行父視圖或佈局使用android:gravity=center牛逼!在Android Studio中完全正常工作並測試版式文件:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/checkscreen" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_gravity="layout_centerHorizontal" 
    android:gravity="center" 
    android:orientation="vertical"> 


    <Button 
     android:id="@+id/check_cancel" 
     android:layout_width="wrap_content" 
     android:layout_height="0sp" 
     android:layout_marginTop="50dp" 
     android:layout_weight="1" 
     android:padding="25dip" 
     android:text="check_next" 
     android:textSize="20sp" /> 

    <Button 
     android:id="@+id/check_now" 
     android:layout_width="wrap_content" 
     android:layout_height="0sp" 
     android:layout_weight="1" 
     android:padding="70dip" 
     android:text="check_now" 
     android:textSize="20sp" /> 

    <Button 
     android:id="@+id/check_redo" 
     android:layout_width="wrap_content" 
     android:layout_height="0sp" 
     android:layout_marginBottom="50dp" 
     android:layout_weight="1" 
     android:padding="25dip" 
     android:text="check_redo" 
     android:textSize="20sp" /> 


</LinearLayout>