父LinearLayout不限制内部TextView的大小设置为WRAP_CONTENT

时间:2016-02-18 19:14:23

标签: java android android-linearlayout

我将LinearLayout设置为100dp的静态高度。然后我在其中有一个textView,我将其设置为WRAP_CONTENT。问题是当textView的高度大于100dp时,textView导致LinearLayout完全展开以容纳textView

我这样设置是因为我希望能够在用户点击按钮时显示和隐藏全文。我认为将linearlayout的高度设置为最小值,然后在单击时将其更新为WRAP_CONTENT,但是当我尝试限制高度时,LinearLayout会忽略它。我试图将clipChildren设置为true,但这并没有帮助。代码如下。我正在使用Android Annotations,但我不认为这与问题有关。

<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="30dp"
android:fitsSystemWindows="true"
android:background="@color/light_grey">

<LinearLayout
    android:orientation="vertical"
    android:clipChildren="true"
    android:background="@color/white"
    android:layout_width="match_parent"
    android:layout_height="100dp">

    <TextView
        android:id="@+id/text_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    </LinearLayout>

Java代码:

@EActivity(R.layout.activity_test)
public class TestActivity extends AppCompatActivity {

@ViewById(R.id.text_view)
TextView textView;

String input;
public static final String INPUT_STRING_KEY = "inputStringKeyForParser";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.input = this.getIntent().getExtras().getString(INPUT_STRING_KEY);
}

@AfterViews
public void showText() {
    textView.setText(input);
}

}

有谁知道如何让TextView停止导致linearlayout扩展?谢谢!

2 个答案:

答案 0 :(得分:0)

尝试

<TextView
android:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="100dp" />

答案 1 :(得分:0)

确定。我认为您不能以这种方式应用高度属性,因为您的布局是ScrollView的子级。将TextView放在另一个LinearLayout中,如下所示:

<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="30dp"
    android:fitsSystemWindows="true"
    android:background="@color/light_grey">

    <LinearLayout
        android:orientation="vertical"
        android:clipChildren="true"
        android:background="@color/white"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="100dp">

            <TextView
                android:id="@+id/text_view"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                />
        </LinearLayout>

    </LinearLayout>
</ScrollView>