在Android EditText中启用滚动条

7

我在我的布局上有一个EditText。以下是我目前拥有的属性:

<EditText
   android:id="@+id/entryIdea"
   android:layout_width="fill_parent"
   android:layout_height="225sp"
   android:gravity="top"
   android:background="@android:drawable/editbox_background"
   android:scrollbars="vertical"/>

然而,我能够看到滚动条但无法使用鼠标或触摸进行滚动。我认为如果我添加相应的监听器,它可能会像在TextView中那样工作。然而,显然并不是这样。

EditText et = (EditText)findViewById(R.id.entryIdea);
et.setMovementMethod(new ScrollingMovementMethod());

你们能帮我解决这个问题吗?

非常感谢。Sammy


3
你需要查看之前的问题,并将最佳答案标记为正确答案。 - Cheryl Simon
一旦EditText中有足够多的行,它应该是可滚动的,因此需要滚动。您不需要添加监听器即可使其正常工作。 您尝试过填写许多文本行吗? - Juhani
7个回答

7
在您的XML中,尝试将EditText的高度设置为android:lines属性(顺便说一下,除了字体大小之外,使用sp来设置任何内容的大小通常不是一个好习惯。在这种情况下,使用dp/dip更自然)而不是layout_height。同时将layout_height设置为wrap_content。否则,即使没有在代码中指定移动方法,您所提供的XML(经过我提到的更改)对我来说也运行良好。当EditText中的实际文本行数大于android:lines属性中指定的行数时,滚动条将出现。

仅供记录,正如Coryffaeus(很好的昵称)所指出的那样,只有在设置属性scrollbars并超过指定的行数lines时,滚动条才会显示。但是,即使您没有设置它,它也将始终滚动。 - Juan José Melero Gómez
问题明确要求为什么无法使用鼠标或触摸移动滚动条。这不是有关显示滚动条的问题。从他们所写的内容来看,我认为没有人回答正确这个问题。 - Alberto M

4

参考此链接

 EditText dwEdit = (EditText) findViewById(R.id.DwEdit);       
 dwEdit.setOnTouchListener(new OnTouchListener() {

            public boolean onTouch(View view, MotionEvent event) {
                // TODO Auto-generated method stub
                if (view.getId() ==R.id.DwEdit) {
                    view.getParent().requestDisallowInterceptTouchEvent(true);
                    switch (event.getAction()&MotionEvent.ACTION_MASK){
                    case MotionEvent.ACTION_UP:
                        view.getParent().requestDisallowInterceptTouchEvent(false);
                        break;
                    }
                }
                return false;
            }
        });

3
editText1.setOnTouchListener(new OnTouchListener() {

        public boolean onTouch(View view, MotionEvent event) {
            // TODO Auto-generated method stub
            if (view.getId() ==R.id.editText1) {
                view.getParent().requestDisallowInterceptTouchEvent(true);
                switch (event.getAction()&MotionEvent.ACTION_MASK){
                case MotionEvent.ACTION_UP:
                    view.getParent().requestDisallowInterceptTouchEvent(false);
                    break;
                }
            }
            return false;
        }
    });

2

请使用以下内容:

 android:maxLines="5"

为您的xml文件添加scrollbars属性即可使滚动条属性起作用。


1
在xml文件中使用: android:maxLines="5" android:scrollbars = "vertical"
并且在.java文件中添加: edt_text.setMovementMethod(new ScrollingMovementMethod());

1
editText1.setOnTouchListener(new OnTouchListener() {

    public boolean onTouch(View view, MotionEvent event) {
        // TODO Auto-generated method stub
        if (view.getId() ==R.id.editText1) {
            view.getParent().requestDisallowInterceptTouchEvent(true);
            switch (event.getAction()&MotionEvent.ACTION_MASK){
            case MotionEvent.ACTION_UP:
                view.getParent().requestDisallowInterceptTouchEvent(false);
                break;
            }
        }
        return false;
    }
});

-1

你的 XML 文件使用:

android:maxLines="5"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接