четверг, 21 июля 2011 г.

Прикручиваем скролинг к TextView.

Постановка задачи: Сделать возможность прокручивать текст, если величина текста больше выделенного места для View, в который он помещен.
Версия Android-а: 1.6


В андроиде есть 2 класса отвечающие за скролинг:
ScrollView и HorizontalScrollView. Еще в классе TextView есть методы setVerticalFadingEdgeEnabled(boolean value) setVerticalScrollBarEnabled(boolean value) setHorizontalFadingEdgeEnabled(boolean value) setHorizontalScrollBarEnabled(boolean value), но они используются, если нужен текст-бегущая строка. А для обычного скролинга нужно  TextView  обернуть в ScrollView либо в HorizontalScrollView:


public class ScrollTextView extends ScrollView {

private TextView _textView;
private LinearLayout.LayoutParams _layoutParams;

public ScrollTextView(Context context, String text) {
super(context);
_textView  = new TextView(context, text);
_layoutParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT);
this.setLayoutParams(_layoutParams);
this.addView(_textView);
}
}

Если содержание TextView динамически меняется, и нужно сделать так чтобы если текста нет - то и елемент TextView не занимал место на экране, то это можно сделать перегрузив метод setText(CharSequence text). переопределить его нельзя, поскольку он final, но можно создать метод с таким же именем и другим типом входящего параметра:

public void setText(String str) {
if (str == null || str.equals("")) this.setVisibility(View.GONE);
else this.setVisibility(View.VISIBLE);
super.setText(str);
}

this.setVisibility(View.GONE) - задает состояние View при котором её не видно и она не занимает место на экране.

Для того чтобы задать позицию скролинга: нужно вызвать метод scrollTextView.post(
new Runnable() {
public void run() {
scrollTextView.scrollTo(x, y)

}
});





Комментариев нет:

Отправить комментарий