在EditText Android中启用滚动条

时间:2010-11-30 22:40:47

标签: android scrollbar android-edittext

我的布局上有一个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());

你能帮助我吗?

提前非常感谢你。 森美

7 个答案:

答案 0 :(得分:7)

在您的XML中尝试将EditText高度设置为不在layout_height中,而是使用android:lines属性(顺便说一句,在设置任何大小时,使用sp通常不是一个好习惯字体大小。在这种情况下使用dp / dip更自然。)

同时将layout_height设为wrap_content。否则,即使没有在代码中指定移动方法,您呈现的XML(以及我提到的更改)也能正常工作。

当然,当EditText中实际的文本行数大于那个时,滚动条会出现,如android:lines属性所示。

答案 1 :(得分:3)

参考此link

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

答案 2 :(得分: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;
        }
    });

答案 3 :(得分:2)

使用它:

 android:maxLines="5"
xml文件的

属性。然后滚动条属性将起作用。

答案 4 :(得分: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;
    }
});

答案 5 :(得分:0)

您的xml文件使用:

android:maxLines="5"

答案 6 :(得分:0)

在xml文件中使用:

机器人:MAXLINES =&#34; 5&#34; android:scrollbars =&#34; vertical&#34;

并在.java文件中添加

edt_text.setMovementMethod(new ScrollingMovementMethod());