2012-04-26 1 views
0

У меня есть 3 компонента в моем приложении, 1 textview (inputType: textMultiline, полоса прокрутки: вертикальная, гравитация: внизу справа) вверху, 1 editview посередине и 1 кнопка внизу. Когда я набираю что-то в своем editview, и я нажимаю кнопку, текст, написанный в окне редактирования, отображается в текстовом виде. Каждый раз, когда я нажимаю ok, текст отображает нижнюю часть, а отображаемые - первые три входа. Мне нужно прокрутить текст, чтобы я мог увидеть свой последний вход.Auto scroll down on textviews

Теперь я хочу, чтобы мои пользователи увидели свой последний ввод в своем текстовом виде. Я хочу знать, есть ли такой код для автоматического scrolldown для textviews каждый раз, когда я ввожу на него новый текст. Я новичок в разработке приложений для Android. Благодаря!

+0

Вот аналогичный вопрос: http://stackoverflow.com/questions/3506696/auto-scrolling-textview-in-android-to-bring-text-into-view – jrajav

ответ

1

Я уже получил ответ за это! Спасибо, что дал мне какую-то идею. Я мог бы использовать их в будущем. @Барат Шарма, ты почти получил ответ! Благодаря!

public void onClick(View v) { 
      // TODO Auto-generated method stub 
      log.setText(log.getText() + "\n" +input.getText()); 

      if(log.getLineCount() > 5){ 
       scroll_amount = scroll_amount + log.getLineHeight(); 
       log.scrollTo(0, scroll_amount); 
      } 
     } 

Я вызывал переменную величину прокрутки вне onCreate(). Еще раз спасибо!

1

вы можете использовать scrollView.scrollTo (x, y) для автоматического прокрутки до требуемой позиции.

/* редактировать */

создать пользовательский класс Scrollview

package com.android.mypackage 
public class myScrollView extends ScrollView{ 
    private int maxY = 0; 
    @Override 
    protected void onScrollChanged(int x, int y, int oldx, int oldy) { 
     super.onScrollChanged(x, y, oldx, oldy); 
     if(y>maxY) 
     maxY=y; 
    } 
    public void moveToEnd(){ 
     this.scrollTo(0, maxY); 
    } 
} 

используя этот пользовательский класс в макет XML, как показано ниже:

... 
<com.android.mypackage.myScrollView 
    android:id="@+id/my_scrollview" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <TextView .../> 
</com.android.mypackage.myScrollView> 
..... 

когда вы нажимаете Ok кнопка просто вызывает функцию myscrollViewObj.movetoEnd(); это всего лишь черновик кода, который еще не протестирован.

+0

Какая должна быть ценность моего y? – ron

+0

вы должны переопределить onScrollChanged и отлаживать, чтобы узнать, какое значение y вы хотите – MichaelP

+0

Хорошо, не пытайся исследовать onScrollChanged. Спасибо! : D – ron

5

Когда вы устанавливаете текст в текстовое окно, просто установите foucus на него. например

tv.setFocusable(true); 

Он автоматически сфокусирует ваше внимание всякий раз, когда вы меняете строку на текстовое изображение.

Если вы добавляете текст в текстовом снова и снова, то вы можете попробовать это

int scroll_amount = tv.getBottom(); 
    tv.scrollTo(0, scroll_amount); 

Надеется, что она будет работать не уверен ..

Попробуйте также

int scroll_amount = (int) (tv.getLineCount() * tv.getLineHeight()) - (tv.getBottom() - tv.getTop()); 
    tv.scrollTo(0, scroll_amount); 
+0

Но каждый раз, когда я ввожу текст в свой текст, текст будет переходить к предыдущему тексту, который я ввел. Поскольку мой текст всего 150dp, после 3-4 строк текстов, я не смогу увидеть следующие строки, которые я ввел. Перед тем, как я увижу тексты, которые я ввел, я должен сначала прокрутить альбом. – ron

+0

Одиночный текст, который вы используете ... –

+0

Что вы подразумеваете под этим? .. – ron