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

Android 尝试在固定大小的容器中显示可滚动文本,android,android-layout,textview,Android,Android Layout,Textview,我试图在ScrollView中的TextView中显示一些信息。文本的长度通常会有所不同,但我希望文本视图保持相同的高度,即使它是空的(如果文本太长,用户必须滚动)。我有滚动部分,但是如果文本太短,TextView会环绕它并收缩。我怎样才能避免呢?或者,我如何使用不同的东西获得我想要的外观和行为?我尝试过使用只读、多行EditText而不是TextView并删除ScrollView,但我无法使EditText只读,除非我将“enabled”属性设置为false,并且这样做不允许用户滚动 我用来测

我试图在ScrollView中的TextView中显示一些信息。文本的长度通常会有所不同,但我希望文本视图保持相同的高度,即使它是空的(如果文本太长,用户必须滚动)。我有滚动部分,但是如果文本太短,TextView会环绕它并收缩。我怎样才能避免呢?或者,我如何使用不同的东西获得我想要的外观和行为?我尝试过使用只读、多行EditText而不是TextView并删除ScrollView,但我无法使EditText只读,除非我将“enabled”属性设置为false,并且这样做不允许用户滚动

我用来测试我的应用程序的主要设备使用安卓4.4.4(KitKat),我还测试了版本4.1.2(果冻豆)

这是布局的代码;我遇到的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>

将其添加到您想要滚动的文本视图中

android:maxLines=“25” android:scrollbars=“垂直”

照这个做,应该行得通

编辑


此方法用于替换ScrollView。ScrollView和TextView至少在我的情况下不太协调。忘了在回答中提到这一点。将ScrollView替换为任何其他容器,如RelativeLayout或LinearLayout,它不起作用;看起来还是一样。我应该指出,我所说的TextView是ID为“TextViewInfo1”的那个(我编辑了我的问题以澄清问题)。而且,它的背景给了它一个边框,所以当文本视图缩小时很容易看到。没关系。我刚刚意识到问题在于滚动视图。我把它换成了一个相亲,它成功了。您可能应该编辑您的答案以指示必须更改ScrollView,否则您的答案是完美的。抱歉,我忘了提及查看我的编辑…如果答案有助于您解决问题,请接受答案:)
<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())