Android:通过RelativeLayout中的一个视图居中所有视图

时间:2016-02-21 09:38:59

标签: android android-layout android-xml android-relativelayout

这是我想要实现的简化版本。我在 RelativeLayout 中有两个视图。 一个视图 始终居中拉伸,如果需要,另一个一个始终 该视图>并保持相同宽度

这是一个简化的代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="20dp"
            android:orientation="vertical">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Single line"
    android:layout_toLeftOf="@+id/horiz"
    android:layout_marginRight="8dp"
    android:layout_centerVertical="true"
    android:textSize="20sp"/>

<HorizontalScrollView
    android:id="@+id/horiz"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:fadeScrollbars="false"
    android:fillViewport="true">

    <TableLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="This is a text"
            android:textSize="17sp"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="This is a text"
            android:textSize="17sp"/>

    </TableLayout>


</HorizontalScrollView>

看起来我想要:

enter image description here

但是当中心视图更宽时,左视图的行为会有所不同:

enter image description here

如果中心视图符合父级大小则完全消失:

enter image description here

对于那些困惑的人

这就是我要做的事情:

如果有额外的空间

  • FIRST视图为CENTERED
  • 第二个视图是LEFT到第一个

如果没有实现空间

  • 第二视图是左中心
  • FIRST视图占用所有剩余空间

有人可以提出一些建议吗?

1 个答案:

答案 0 :(得分:1)

我不知道您真的需要RelativeLayout,或者您也可以使用LinearLayout但我只是将您的布局更改为LinearLayout,将orientation更改为{ {1}}并将horizontal添加到android:layout_weight="1",一切正常。完整代码如下所示,

HorizontalScrollView

当TextView的文本开始变长时,它会在右侧占用空间,不会影响左<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="20dp" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Single line" android:layout_toLeftOf="@+id/horiz" android:layout_marginRight="8dp" android:layout_centerVertical="true" android:textSize="20sp"/> <HorizontalScrollView android:id="@+id/horiz" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:fadeScrollbars="false" android:layout_weight="1" android:fillViewport="true"> <TableLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="This is a text a text" android:textSize="17sp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="This is a text" android:textSize="17sp"/> </TableLayout> </HorizontalScrollView> </LinearLayout> 并启用水平滚动

Sample