Постановка задачи: Сделать возможность прокручивать текст, если величина текста больше выделенного места для 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)
}
});
Версия 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)
}
});
Комментариев нет:
Отправить комментарий