Как программно отображать полосы прокрутки в TextView
Я искал и искал, чтобы найти ответ на вопрос о том, как добавить вертикальную (или горизонтальную) полосу прокрутки в TextView без необходимости использовать XML только для добавления строки: android: scrollbars = "vertical".
Должен быть способ сделать это программно, что не требует вставки этого в другой ScrollView.
Я только что узнал, как и потому, что я способ взволнованно об этом и хочу помочь любому, кто застрял в одном вопросе, вот он:
Ответы
Ответ 1
Rusian Yanchyshyn опубликовал ключ в своем ответе на Android: включение полос прокрутки в представлении на холсте
С помощью анонимного класса и блока инициализации мы можем сделать следующее:
TextView textViewWithScrollBars = new TextView(context)
{
{
setVerticalScrollBarEnabled(true);
setMovementMethod(ScrollingMovementMethod.getInstance());
setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET);
// Force scrollbars to be displayed.
TypedArray a = this.getContext().getTheme().obtainStyledAttributes(new int[0]);
initializeScrollbars(a);
a.recycle();
}
}
Ответ 2
// try this
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = new TextView(this);
textView.setText("demotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotextdemotext");
textView.setVerticalScrollBarEnabled(true);
textView.setLines(3);
textView.setMovementMethod(new ScrollingMovementMethod());
addContentView(textView,new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
}