android - 需要让TextView自动垂直滚动

标签 android textview

我正在尝试开发一项 Activity ,该 Activity 将成为大学项目的简单聊天应用程序的一部分。我想要一个设置,其中我有一个 EditText 和一个 Button,当按下它时获取 EditText 的文本并将其附加到内容中同一 Activity 中的 TextView。到目前为止,这对我来说似乎工作正常,但我也想这样做,以便在发送消息时显示在 TextView 上,如果没有足够的空间来显示新的文本行它会自动向下滚动。

这就是我在 Activity 中的 onCreate() 的样子

protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final EditText edit = (EditText) findViewById(R.id.editText1) ;
    final Button button = (Button) findViewById(R.id.button1) ;
    final TextView text = (TextView) findViewById(R.id.textView1) ;

    //text.setMaxHeight(200);
    text.setSelected(true);
    text.setMovementMethod(new ScrollingMovementMethod());

    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if(edit.getText().length() > 0) {
                text.append(edit.getText() + "\n") ;
                edit.setText("");
            }
        }
    });
}

这是 Activity 的 XML 布局文件的相关部分。

<TextView
    android:id="@+id/textView1"
    android:ellipsize="marquee"
    android:focusable="false"
    android:marqueeRepeatLimit="marquee_forever"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="70dp"
    android:text=""
    android:scrollbars ="vertical"
    android:maxLines="10" />

我做错了什么?还是我误解了,我想要的是 TextView 无法实现的?

编辑:完整的 XML 文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<Button
    android:id="@+id/button1"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/editText1"
    android:layout_alignBottom="@+id/editText1"
    android:layout_alignParentRight="true"
    android:text="@string/okString" />

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="107dp"
    android:layout_toLeftOf="@+id/button1"
    android:ems="10" />

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true" >

    <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="70dp"
            android:ellipsize="marquee"
            android:focusable="false"
            android:marqueeRepeatLimit="marquee_forever"
            android:maxLines="10"
            android:scrollbars="vertical"
            android:text="     " />
</ScrollView>

最佳答案

            String text="Im trying to develop an activity that will be part of a simple chat application for a college project. I want to have a setup where I have an EditText and a Button which when pressed takes the  "
            mText = (TextView) findViewById(R.id.textView1);
            mText.setText(text)
    mText.setMovementMethod(new ScrollingMovementMethod())

XML

    <ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent">
<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="@android:color/black"
    android:text="                       
                    " />

注意:不要将您的文本存储为普通字符串,而是将其保存为 HTML 格式,这会在您的文本中添加换行符。

 String text="Im trying to develop an activity that will<br> be part of a simple chat <br>application for a college project. I want to have a setup where I have an EditText and <br>a Button which when pressed takes the  "

然后将这一行添加到上面的代码中

 mText.setText(Html.fromHtml(text));

这将返回更合适的结果

关于android - 需要让TextView自动垂直滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20205366/

相关文章:

android - Firebase在android中使用twitter登录,如何添加电子邮件

java - 如何在 Android 中使用 Intent 向服务发送信息

android - TextView 不适合 ScrollView

android - 抽屉导航标题是否超过了内容?

android - 以编程方式设置 TextView 的布局权重

Android Market 链接显示两个选项

android - 面临 map View 问题

android - 为什么 TextView 在多行时有结束填充?

android - 当我的应用程序失去焦点并重新获得焦点时,UI 会更新。奇怪的问题

android - 使用服务时从最近的任务中删除应用程序不会被杀死