2017-06-24 34 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

相关问题