Android LinearLayout:给第一个元素重新映射宽度

时间:2016-05-06 17:30:32

标签: android android-layout android-linearlayout

我正在尝试为LinearLayout中的2个元素实现以下布局: enter image description here

总结一下: - 应允许第二个元素尽可能多地填充 - 如果有必要,应缩短第一个元素(textview以" ..."结尾)。 - 在较大的设备上,两个元素应该是可见的(如果可能的话),并且左对齐。

到目前为止,这是我的解决方案:

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="@dimen/filter_topbar_height"
        android:orientation="horizontal">

    <LinearLayout
        android:id="@+id/filter_container"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:layout_weight="0">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center_vertical"
            android:lines="1"
            android:clickable="false"
            android:text="@string/filter_uppercase_colon" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:lines="1"
            android:ellipsize="end"
            android:id="@+id/category_spinner"/>

    </LinearLayout>


    <LinearLayout
        android:id="@+id/sorting_container"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center_vertical"
            android:lines="1"
            android:text="@string/sorting_uppercase_colon" />

        <Spinner
            android:id="@+id/sort_spinner"
            style="@style/spinner"
            android:lines="1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:spinnerMode="dialog"
            tools:entries="@array/sorting_options"/>

    </LinearLayout>

</LinearLayout>

我目前的解决方案的结果与我想要的相反。这里第一个元素占据了它需要的宽度,而第二个元素被推向右边。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

你应该使用textview的ellipsize属性,如

android:scrollHorizontally="true" android:ellipsize="end" android:maxLines="1"

答案 1 :(得分:0)

将第一个LinearLayout更改为

    android:id="@+id/filter_container"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:layout_weight="1"

和第二个LinearLayout

    android:id="@+id/sorting_container"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_weight="0"
    android:orientation="horizontal"

答案 2 :(得分:0)

在文字视图中添加这两个属性

android:maxLines="1"
android:ellipsize="end"