我正在尝试在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>
答案 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)放在一起