Android: автоматическая прокрутка вниз EditTextView для приложений чата - PullRequest
4 голосов
/ 24 февраля 2011

Спасибо за просмотр, я создаю приложение чата.Это работает по большей части.Единственное, с чем у меня проблема - это прокрутка.Я использую EditText для публикации нового сообщения с сервера.

по методу

msg = msg + "\n" + newMsg
EditText.setText(msg)

Мне нужно сделать новый текст под старым текстом видимым каккак только это произойдет.

Так что я думаю, что лучший способ - это автоматическая прокрутка вниз к низу, как только представление обновится.

Есть ли простой способсделай это?как в макет может быть?

Еще раз спасибо!

код для макета

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/sendButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:text="send"
/>
    <EditText
android:id="@+id/msgBox"
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:layout_alignParentBottom="true" 
android:layout_toLeftOf="@+id/sendButton"
android:gravity="left"
android:longClickable="false"
/>
<EditText  
android:id="@+id/chatBox"
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:editable="false"
android:layout_above="@+id/msgBox"
android:scrollbars="vertical" 
android:gravity="left|top" 
android:isScrollContainer="true" 
android:cursorVisible="false" 
android:longClickable="false" 
android:clickable="false"
android:autoLink="all"
/>
</RelativeLayout>

Ответы [ 3 ]

15 голосов
/ 01 марта 2011

Решение состоит в том, чтобы отправить отдельное сообщение пользовательского интерфейса по почте.Это определенно сработает.После того, как вы установите текст / добавьте текст в TextView внутри ScrollView, обновите ScrollView с помощью метода post (Runnable), как показано ниже:

8 голосов
/ 24 февраля 2011

Я думаю, что лучший способ сделать это - использовать TextView со скроллером, а не EditText, потому что однажды пользователь печати сообщения не сможет его редактировать Попробуйте что-то вроде этого, это прекрасный способ напечатать сообщение

<ScrollView android:id="@+id/scroller"
        android:layout_width="fill_parent" android:layout_height="fill_parent"

        android:background="#FFFFFF">
        <TextView android:id="@+id/messageView"
            android:layout_height="fill_parent" android:layout_width="fill_parent"
            android:paddingBottom="8dip" android:background="#ffffff"
            android:textColor="#000000" />
    </ScrollView>

И для автоматической прокрутки вниз вызовите этот метод после нажатия на сообщение для просмотра

private void scrollDown() {
        scroller.smoothScrollTo(0, messageView.getBottom());  
}

Здесь скроллер - ScrollView, а messageView - TextView

Вы также можете распечатать сообщение с другим цветом, используя HTML как

messageView.append(Html.fromHtml("<font color='green'><b>("+date+") "+ username +":</b></font><br/>"+ message+"<br/>", null, null));
1 голос
/ 24 февраля 2011

Попробуйте этот метод: Программная прокрутка EditText

...