Android两列(列表视图)线性布局,左列自动宽度

时间:2014-12-22 17:08:20

标签: android android-layout

我的目标是通过标题(左),图(右)和进度条(下方)实现以下布局。

layout goal

我希望标题描述在填充空格后不会在新行上断开,而不是向右溢出(图)。

我最接近的是使用GridLayout作为LinearLayout的子项。

enter image description here

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:tools="http://schemas.android.com/tools"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:orientation="vertical">

    <!-- top row -->
    <GridLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:columnCount="2"
        android:paddingBottom="4dp"
        android:paddingTop="4dp">

        <TextView
            android:id="@+id/budget_listItem_title"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            tools:text="foo bar baz foo bar baz foo bar baz foo bar baz foo bar baz"
            />

        <TextView
            android:id="@+id/budget_listItem_remaining"
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            tools:text="1000"
            android:layout_gravity="end"/>

    </GridLayout>

        <ProgressBar
            style="@android:style/Widget.ProgressBar.Horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:progress="50"/>

</LinearLayout>

但是当描述太长时,它会将数字推离屏幕;

enter image description here

那么,忽略实际的样式/主题,实现这种布局的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

试试这个布局:

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

    <TextView
        android:id="@+id/budget_listItem_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/budget_listItem_remaining"
        tools:text="foo bar baz foo bar baz foo bar baz foo bar baz foo bar baz" />

    <TextView
        android:id="@+id/budget_listItem_remaining"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        tools:text="1000" />

    <ProgressBar
        style="@android:style/Widget.ProgressBar.Horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/budget_listItem_title"
        android:progress="50" />

</RelativeLayout>

我使用了相对布局,因为您可以通过名称来判断,它允许我们相对于彼此放置元素。在这个例子中,我们希望标题位于剩余值的左侧,并与父级左上角的边缘对齐。