Android 如何以编程方式在TextView上显示滚动条

Android 如何以编程方式在TextView上显示滚动条,android,scroll,textview,scrollview,Android,Scroll,Textview,Scrollview,我搜索了又搜索,想找到一个答案:如何在文本视图中添加垂直(或水平)滚动条,而不必使用XML来添加行:android:scrollbars=“vertical” 必须有一种方法可以通过编程实现,而不需要在另一个ScrollView中使用它 我刚刚发现了我是如何并且因为我对这个问题感到兴奋的,我想帮助那些被同样问题困扰的人,这里是:俄罗斯的Yanchyshyn,在他的回答中把答案贴在 借助另一个类&初始化程序块,我们现在可以执行以下操作: TextView textViewW

我搜索了又搜索,想找到一个答案:如何在文本视图中添加垂直(或水平)滚动条,而不必使用XML来添加行:android:scrollbars=“vertical”

必须有一种方法可以通过编程实现,而不需要在另一个ScrollView中使用它


我刚刚发现了我是如何并且因为我对这个问题感到兴奋的,我想帮助那些被同样问题困扰的人,这里是:

俄罗斯的Yanchyshyn,在他的回答中把答案贴在

借助另一个类&初始化程序块,我们现在可以执行以下操作:

            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();                        
                }
            }

俄罗斯人Yanchyshyn在他的回答中把钥匙贴在了

借助另一个类&初始化程序块,我们现在可以执行以下操作:

            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();                        
                }
            }
//试试这个
activity_main.xml
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView TextView=新的TextView(此);
textView.setText("DemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtextdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtextdemoxtdemoxtextextextextextextextextdemoxtdemoxtextextextextextextdemoxtext;
textView.setVerticalScrollBarEnabled(true);
设置行(3);
setMovementMethod(新的ScrollingMovementMethod());
addContentView(textView,新建ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_内容,ViewGroup.LayoutParams.WRAP_内容));
}
//试试这个
activity_main.xml
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView TextView=新的TextView(此);
textView.setText(“DemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtDemoExtextdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtdemoxtextdemoxtdemoxtextextextextextextextextdemoxtdemoxtextextextextextextdemoxtext;
textView.setVerticalScrollBarEnabled(true);
设置行(3);
setMovementMethod(新的ScrollingMovementMethod());
addContentView(textView,新建ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_内容,ViewGroup.LayoutParams.WRAP_内容));
}

仅在滚动时显示

Xml(在textView元素中):

OnCreate:

textView.movementMethod = ScrollingMovementMethod()

仅在滚动时显示

Xml(在textView元素中):

OnCreate:

textView.movementMethod = ScrollingMovementMethod()

首先,创建一个style.xml

<style name="VerticalScrollableTextView">
    <item name="android:scrollbars">vertical</item>
    <item name="android:scrollbarFadeDuration">0</item>
</style>

仅此而已!

首先-创建一个style.xml

<style name="VerticalScrollableTextView">
    <item name="android:scrollbars">vertical</item>
    <item name="android:scrollbarFadeDuration">0</item>
</style>

仅此而已!

Hi Haresh,其要点是“setVerticalScrollBarEnabled(true)”本身不显示滚动条。您还必须设置此属性setMovementMethod(new ScrollingMovementMethod())@Hareshchelana很酷,我们如何启用自动滚动到最后一行?用户通常希望看到更新的消息,但不总是旧消息。嗨,Haresh,这一点的关键是“setVerticalScrollBarEnabled(true)”本身不显示滚动条。您还必须设置此属性setMovementMethod(new ScrollingMovementMethod())@Hareshchelana Cool,我们如何启用自动滚动到最后一行?用户通常希望看到更新的消息,但不希望总是看到旧消息。不确定这是否适用于API级别21及以上,因为initializeScrollbar方法已被删除。对于现有的TextView?不确定这是否适用于API级别21及以上,作为initializeScrollbars方法已被删除..对于现有的TextView?您阅读了问题吗?问题是如何在不使用xml的情况下执行此操作。是的,但所有这些xml元素都以编程方式进行模拟!您阅读了问题吗?问题是如何在不使用xml的情况下执行此操作。是的,但所有这些xml元素都以编程方式进行模拟!