Android LinearLayout静态高度转换为wrap_content

时间:2015-05-28 07:21:09

标签: android android-layout

我正在尝试充气并显示具有特定高度的LinearLayout但在显示时,高度始终会转换为wrap_content。我的布局是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="@dimen/dialog_title_height"
    android:padding="@dimen/default_padding">

    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center_vertical"
        android:text="Scan for devices" />

    <ProgressBar
        android:id="@+id/progressBarScanning"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" />

</LinearLayout>

首先接缝很好但是当我将ProgressBar可见性设置为View.GONE时,布局高度会缩小到TextView的大小,该大小远小于layout_height上的wrap_content。父布局。

但是,如果我将视图包装在具有指定高度的第二个LinearLayout中并将父级设置为<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="@dimen/default_padding"> <LinearLayout android:layout_width="match_parent" android:layout_height="@dimen/dialog_title_height"> <TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center_vertical" android:text="Scan for devices" /> <ProgressBar android:id="@+id/progressBarScanning" android:layout_width="wrap_content" android:layout_height="match_parent" /> </LinearLayout> </LinearLayout> ,那么它可以正常工作。像这样:

LinearLayout

但是现在AndroidStudio当然抱怨第二个Attribute没用了。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以为特定对象设置权重,而不是线性布局。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="@dimen/default_padding">

    <TextView
        android:layout_width="0dp"
        android:layout_height="@dimen/dialog_title_height"
        android:gravity="center_vertical"
        android:text="Scan for devices" />

    <ProgressBar
        android:id="@+id/progressBarScanning"
        android:layout_width="wrap_content"
        android:layout_height="@dimen/dialog_title_height" />

</LinearLayout>

希望它能奏效。