Как программно отображать полосы прокрутки в 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));
}