2017-06-24 31 views
0

我有一個複選框和一個固定在UI左側的TextView。我有另一個TextView「newcard#」,我想以父寬度爲中心。父寬度是從左向右運行的白色空間,如下所示。注意「newcard#」是如何在紅色中心線的右側。基本上我想「newcard#」以紅色中心線爲中心。android如何在父窗口的全部寬度內居中TextView?

enter image description here

我曾嘗試重力和layout_gravity的多種組合沒有任何的運氣。我在這裏錯過了什麼?

item.xml

<android.support.v7.widget.CardView 
xmlns:card_view="http://schemas.android.com/apk/res-auto" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_marginTop="4dp" 
android:layout_marginBottom="4dp" 
card_view:cardBackgroundColor="@android:color/white" 
card_view:cardCornerRadius="6dp" 
card_view:cardElevation="4dp" > 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/background_selector" > 

<CheckBox 
     android:id="@+id/chkSelected" 
     android:layout_width="wrap_content" 
     android:layout_height="30dp" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentLeft="true" 
     android:layout_marginLeft="4dp" 
     android:layout_marginStart="4dp" 
     android:layout_marginTop="4dp" 
     android:gravity="center" 
     android:background="#008080" /> 

    <TextView 
     android:id="@+id/cardType1" 
     android:layout_width="wrap_content" 
     android:layout_height="30dp" 
     android:layout_toRightOf="@+id/chkSelected" 
     android:layout_toEndOf="@+id/chkSelected" 
     android:paddingStart="3dp" 
     android:paddingLeft="3dp" 
     android:paddingEnd="6dp" 
     android:paddingRight="6dp" 
     android:layout_marginTop="4dp" 
     android:gravity="center" 
     android:textColor="#ffffff" 
     android:textStyle="bold|italic" 
     style="@style/Base.TextAppearance.AppCompat.Subhead" /> 

    <TextView 
     android:id="@+id/cardBlankText1" 
     android:layout_width="match_parent" 
     android:layout_height="30dp" 
     android:layout_toRightOf="@+id/cardType1" 
     android:layout_toEndOf="@+id/cardType1" 
     android:layout_marginTop="4dp" 
     android:layout_marginLeft="6dp" 
     android:layout_marginStart="6dp" 
     android:gravity="center_horizontal" 
     android:textColor="@color/colorFlLabelFinal" 
     android:textStyle="bold"    
     style="@style/Base.TextAppearance.AppCompat.Subhead" /> 
+0

在第二TextView的,你應該使用'機器人:layout_centerHorizo​​ntal = 「真」'。 – CoolMind

+0

我也嘗試過。在這種情況下,「newcard#」最終位於「Work」TextView的右側。 – AJW

+0

您是否刪除了layout_toRightOf和layout_toEndOf? – CoolMind

回答

1

我只保留RelativeLayout的,希望結果不會改變。 刪除:

android:layout_toEndOf="@+id/cardType1" 
android:layout_toRightOf="@+id/cardType1" 

,並插入:

android:layout_centerHorizontal="true" 

所以:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/background_selector"> 

    <CheckBox 
     android:id="@+id/chkSelected" 
     android:layout_width="wrap_content" 
     android:layout_height="30dp" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="4dp" 
     android:layout_marginStart="4dp" 
     android:layout_marginTop="4dp" 
     android:background="#008080" 
     android:gravity="center"/> 

    <TextView 
     android:id="@+id/cardType1" 
     style="@style/Base.TextAppearance.AppCompat.Subhead" 
     android:layout_width="wrap_content" 
     android:layout_height="30dp" 
     android:layout_marginTop="4dp" 
     android:layout_toEndOf="@+id/chkSelected" 
     android:layout_toRightOf="@+id/chkSelected" 
     android:gravity="center" 
     android:paddingEnd="6dp" 
     android:paddingLeft="3dp" 
     android:paddingRight="6dp" 
     android:paddingStart="3dp" 
     tools:text="Work" 
     android:textColor="#ffffff" 
     android:textStyle="bold|italic"/> 

    <TextView 
     android:id="@+id/cardBlankText1" 
     style="@style/Base.TextAppearance.AppCompat.Subhead" 
     android:layout_width="match_parent" 
     android:layout_height="30dp" 
     android:layout_marginLeft="6dp" 
     android:layout_marginStart="6dp" 
     android:layout_marginTop="4dp" 
     android:layout_centerHorizontal="true" 
     android:gravity="center_horizontal" 
     tools:text="newcard#" 
     android:textColor="@color/colorFlLabelFinal" 
     android:textStyle="bold"/> 

    <TextView 
     android:id="@+id/cardBlankTextNumsTotal" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     tools:text="fggfhfg" 
     android:layout_toRightOf="@id/cardBlankText1"/> 

</RelativeLayout> 
+1

我刪除了layout_toRightOf和layout_toEndOf,並添加了gravity =「center」或gravity =「center_horizo​​ntal」,並且看起來都很好!接受並投票。乾杯! – AJW

+0

一個小問題。 TextView「cardBlankTextNumsTotal」未顯示在居中的「cardBlankText1」的右側。我嘗試刪除layout_toRightOf =「@ + id/cardBlankText1」和layout_toEndOf =「@ + id/cardBlankText1」,但沒有運氣。任何想法如何解決? – AJW

+0

感謝您接受答案。也許你應該設置'android:layout_width =「wrap_content」'cardBlankText1 TextView? – CoolMind

相關問題