尝试在固定大小的容器中显示可滚动文本

时间:2015-08-19 18:54:49

标签: android android-layout textview

我正在尝试在ScrollView内部的TextView中显示一些信息。文本的长度通常会有所不同,但我希望TextView保持相同的高度,即使它是空的(如果文本太长,用户必须滚动)。我有滚动部分,但如果文本太短,TextView会缠绕它并收缩。我怎么能避免这种情况?或者,如何使用不同的东西来获得我正在寻找的外观和行为?我尝试使用只读,多行EditText而不是TextView并删除ScrollView,但我无法使EditText成为只读,除非我将“enabled”属性设置为false,并且这样做没有'让用户滚动。

我用来测试我的应用程序的主要设备使用的是Android 4.4.4(KitKat),我还在4.1.2版(Jelly Bean)上进行了测试。

这是布局的代码;我遇到问题的TextView是 TextViewInfo1

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <RelativeLayout
        android:id="@+id/RelativeLayoutMain"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        xmlns:android="http://schemas.android.com/apk/res/android">

        <TextView
            android:textStyle="bold"
            android:textColor="#ff000000"
            android:id="@+id/TextViewLabelName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/name" />
        <TextView
            android:textColor="#ff000000"
            android:id="@id/TextViewName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="@dimen/margin_textview"
            android:layout_marginLeft="@dimen/margin_textview"
            android:text=""
            android:layout_toRightOf="@id/TextViewLabelName"
            android:layout_toEndOf="@id/TextViewLabelName"
            android:layout_alignBaseline="@id/TextViewLabelName" />

        <TextView
            android:textStyle="bold"
            android:textColor="#000000"
            android:id="@+id/TextViewTitle1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingTop="@dimen/activity_vertical_margin"
            android:text="@string/title_1"
            android:layout_below="@id/TextViewLabelName" />

        <View
            android:background="#000000"
            android:layout_width = "match_parent"
            android:layout_height="1dip"
            android:layout_centerVertical ="true"
            android:layout_below="@id/TextViewTitle1" />

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="100.0dip"
            android:layout_marginTop="@dimen/padding_separator"
            android:layout_alignStart="@id/TextViewTitle1"
            android:layout_alignLeft="@id/TextViewTitle1"
            android:layout_below="@id/TextViewTitle1"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true">

            <!-- This is the TextView I'm having trouble with. -->
            <TextView
                android:id="@+id/TextViewInfo1"
                android:textColor="#000000"
                android:layout_width="match_parent"
                android:layout_height="100.0dip"
                android:gravity="top"
                android:ems="10"
                android:textSize="@dimen/font_size_info_1"
                android:background="@drawable/style_edittext" />
        </ScrollView>
    </RelativeLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:orientation="horizontal"
        android:layout_below="@id/RelativeLayoutMain"
        android:gravity="bottom"
        xmlns:android="http://schemas.android.com/apk/res/android">

        <Button
            android:id="@+id/btn1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/button_1" />
        <Button
            android:id="@+id/btn2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/button_2" />
        <Button
            android:id="@+id/btn3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/button_3" />
    </LinearLayout>
</RelativeLayout>

1 个答案:

答案 0 :(得分:2)

在你想要滚动的文本视图中添加它

机器人:MAXLINES = “25”  机器人:滚动条= “垂直”

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="100.0dip"
        android:layout_marginTop="@dimen/padding_separator"
        android:layout_alignStart="@id/TextViewTitle1"
        android:layout_alignLeft="@id/TextViewTitle1"
        android:layout_below="@id/TextViewTitle1"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true">

        <!-- This is the TextView I'm having trouble with. -->
        <TextView
            android:id="@+id/TextViewInfo1"
            android:textColor="#000000"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="top"
            android:maxLines="25"
            android:scrollbars="vertical"
            android:ems="10"
            android:textSize="@dimen/font_size_info_1"
            android:background="@drawable/style_edittext" />
    </RelativeLayout>

在代码中:

yourTextView.setMovementMethod(new ScrollingMovementMethod())

这样做。它应该工作

修改

此方法用于替换ScrollView。 ScrollView和TextView在我的情况下并不能很好地结合在一起。忘记在答案中提及。将ScrollView与其他任何容器(如RelativeLayout或LinearLayout)放在一起