当使用weightSum和layout_weight时,如何在LinearLayout元素上设置最小宽度

3
我将LinearLayout的子项宽度设置为布局的百分比。
在7英寸和10英寸屏幕上显示正常,但在5英寸屏幕上,给定的百分比会导致文本宽度太小。
子项的minWidth属性被忽略了。
如何在子项上设置最小宽度?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_file_seek_bar"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:layout_marginTop="10dp"
    android:weightSum="100"
    android:gravity="center_vertical">

    <TextView
        android:id="@+id/textView_file_playing_time"
        android:layout_width="0dp"
        android:layout_weight="8"
        android:minWidth="100dp"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#ffffff"
        android:text="00:00"
        android:layout_marginLeft="15dp"
    />

    <SeekBar
        android:id="@+id/seek_bar_source_file"
        android:layout_width="0dp"
        android:layout_weight="92"
        android:layout_height="40dp"
        android:indeterminate="false"
    />

</LinearLayout>
2个回答

2
这应该可以工作。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_file_seek_bar"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:layout_marginTop="10dp"
    android:gravity="center_vertical"
    android:orientation="horizontal"
    android:weightSum="100" >

    <TextView
        android:id="@+id/textView_file_playing_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:maxWidth="100dp"
        android:text="00:00"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#000000" />
    <SeekBar
        android:id="@+id/seek_bar_source_file"
        android:layout_width="0dp"
        android:layout_height="40dp"
        android:layout_weight="92"
        android:indeterminate="false" />
</LinearLayout>

13
回答不够好,请用一些词语解释你所做的更改以及原因... - Cameron Vetter

0

android:minWidth被忽略,因为android:layout_width="0dp"。您可以将单独的布局放入layout-normal目录中,而不需要android:layout_weight参数:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_file_seek_bar"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginTop="10dp"
android:gravity="center_vertical">

<TextView
    android:id="@+id/textView_file_playing_time"
    android:layout_width="wrap_content"
    android:minWidth="100dp"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textColor="#ffffff"
    android:text="00:00"
    android:layout_marginLeft="15dp"
/>

<SeekBar
    android:id="@+id/seek_bar_source_file"
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:indeterminate="false"
/>


我希望在7英寸和10英寸屏幕上,子元素占布局的百分比,因此使用了android:layout_width="0dp"。我没有layout-normal目录,它有什么用? - matdev
@matdev 你可以为不同的屏幕尺寸定义不同的布局。更多信息可以在这里找到:http://developer.android.com/guide/practices/screens_support.html - amukhachov
1
感谢 @birdy 指引我方向。不过,我想保持将默认宽度设置为百分比的方式。让 minWidth 属性与 layout_weight 一起工作可以避免为不同屏幕尺寸创建布局。 - matdev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接