android如何在父级的全宽范围内居中TextView?

时间:2017-06-24 15:27:32

标签: android-recyclerview cardview

我有一个固定在UI左侧的Checkbox和TextView。我有另一个TextView" newcard#"我想以父母的全宽度为中心。父宽度是从左到右运行的空白区域,如下所示。请注意" newcard#"位于红色中心线的右侧。基本上我想" newcard#"以红色中心线为中心。

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"  />  

1 个答案:

答案 0 :(得分: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>