【问题标题】:2 TextViews filling up remaining space equally2 TextViews 平均填满剩余空间
【发布时间】:2014-07-23 11:55:17
【问题描述】:

我正在尝试为 ListView 中的列表项制作以下布局。理想情况下,我想要一个包含 5 个文本视图的布局,如下所示: 基本上在上排,我希望两端的两个 TextView 的宽度是固定的,而另外两个则平分剩余空间。我找到了有关如何使一个 textview 填充剩余空间的建议,但没有关于两个 textview 如何平均分割空间的建议。五个 TextView 的结果集应填充 Layout 项

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:padding="6dip">

    <TextView
        android:id = "@+id/s1"
        android:layout_width="50dip"
        android:layout_height = "50dip"
        android:text="what"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
    android:gravity="left"
        />
    <TextView
        android:id = "@+id/t1"
         android:layout_width="fill_parent"
        android:layout_height = "50dip"
        android:layout_toRightOf="@id/s1"
        android:text="why"
        android:layout_alignParentTop="true"
        />
    <TextView
        android:id = "@+id/t2"
         android:layout_width="fill_parent"
        android:layout_height = "50dip"
        android:layout_toRightOf="@id/t1"
        android:text="why"
        android:layout_alignParentTop="true"
        />
    <TextView
        android:id = "@+id/s2"
         android:layout_width="50dip"
        android:layout_height = "50dip"
        android:layout_toRightOf="@id/t2"
        android:text="what"
        android:gravity="right"
        android:layout_alignParentTop="true"

        />
    <TextView
        android:id = "@+id/bottom"
         android:layout_width="fill_parent"
        android:layout_height = "wrap_content"
        android:layout_below="@id/s1"
        android:text="what"
        android:gravity="center"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"

        />
    </RelativeLayout>

【问题讨论】:

  • 您的s1s2 视图是否总是具有静态宽度(50dip)?如果是的话 - 只需RelativeLayout 和任何额外的LinearLayouts 就可以实现您所需要的:)
  • 带权重的线性布局
  • 你能画出一些东西来说明你的意思吗?读起来有点难理解。图片真的很有帮助

标签: android android-layout


【解决方案1】:

LinearLayout替换父RelativeLayout(或者如果你不能添加额外的LinearLayout并将所有TextViews添加到其中,那么将android:layout_weight="1"添加到所有TextViews你想占据剩余的相等部分空间。

【讨论】:

  • 这不会在 RelativeLayout 上做任何事情
  • 没错。我没有检查根布局的类型,已更正
【解决方案2】:

试试这个

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" 
android:padding="6dip">

<TextView
    android:id = "@+id/s1"
    android:layout_width="50dip"
    android:layout_height = "50dip"
    android:text="what"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:gravity="left" />

<TextView
    android:id = "@+id/s2"
    android:layout_width="50dip"
    android:layout_height = "50dip"
    android:text="what"
    android:gravity="right"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"/>

<LinearLayout
    android:layout_height="50dip"
    android:layout_width="match_parent"
    android:layout_toRightOf="@id/s1"
    android:layout_toLeftOf="@id/s2"
    android:layout_alignParentTop="true"
    android:orientation="horizontal" >

    <TextView
        android:id = "@+id/t1"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height = "match_parent"
        android:text="why"/>

    <TextView
        android:id = "@+id/t2"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height = "match_parent"
        android:text="why" />

</LinearLayout>

<TextView
    android:id = "@+id/bottom"
    android:layout_width="fill_parent"
    android:layout_height = "wrap_content"
    android:layout_below="@id/s1"
    android:text="what"
    android:gravity="center"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true" />
</RelativeLayout>

【讨论】: