如何将TextView的结束边缘定位到布局的中心?

时间:2015-12-30 17:33:47

标签: android android-layout

我在TextView内部有一个简单的RelativeLayout

我想将TextView 结束边定位到RelativeLayout的中心,如下图所示

Desired result

我找到了类似android:layout_toStartOf=...

的内容

示例:

<RelativeLayout
  android:layout_width="match_parent"
  android:layout_height="match_parent">  
    <TextView 
          android:text="TextView" 
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_toStartOf=...
        />
</RelativeLayout>

但是这只会使结束边缘与某事物的开始对齐。 (不能用于将末端边缘对齐到布局的中心)。

3 个答案:

答案 0 :(得分:1)

您可以在View内居中创建一个虚拟RelativeLayout,然后将TextView左对齐:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <View
        android:id="@+id/center_anchor"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_centerHorizontal="true" />

    <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/center_anchor"
        android:text="hello world" />

</RelativeLayout>

您还可以查看支持基于百分比的维度和边距的PercentRelativeLayout。这意味着您可以指定50%的右边距。

答案 1 :(得分:1)

注意:已经有类似的问题和答案here

您需要在RelativeLayout中添加一个小部件,您可以将其用作TextView的位置参考。水平居中的空Space小部件(0dp x 0dp)适用于此。

<RelativeLayout>

    <!-- Empty space widget (0x0 dp) centered horizontally -->
    <Space
        android:id="@+id/spacer" 
        android:layout_width="0dp" 
        android:layout_height="0dp"
        android:layout_centerHorizontal="true" 
        android:visibility="invisible"/>

    <!-- TextView to left of the spacer-->
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/spacer"
        android:text="awesome text!"/>

</RelativeLayout>

答案 2 :(得分:1)

你可以使用PercentRelativeLayout

来做到这一点
<android.support.percent.PercentRelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black">


<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:background="@android:color/white"
    android:text="TextView"
    android:textColor="@android:color/black"
    app:layout_marginRightPercent="50%" />