【问题标题】:Enabling scrollbar in EditText Android在 EditText Android 中启用滚动条
【发布时间】:2011-05-18 04:40:33
【问题描述】:

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

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

提前非常感谢您。 萨米

【问题讨论】:

  • 您需要检查之前的问题并将最佳答案标记为正确答案。
  • 一旦 EditText 中有足够的行数,它应该是可缩放的,因此需要滚动。您无需添加侦听器即可使其工作。你试过用多行文本填充它吗?

标签: android scrollbar android-edittext


【解决方案1】:

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

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

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

【讨论】:

  • 只是为了记录,正如 Coryffaeus (顺便说一句的好昵称)指出的那样,只有当您设置属性 scrollbars 并且超过指定的行数时,滚动条才会显示。但是,在lines 中,即使您没有设置它也会一直滚动。
  • 该问题明确询问为什么滚动条不能用鼠标或触摸移动。显示滚动条不是问题。我认为没有人能从他们所写的内容中得到正确的问题。
【解决方案2】:

参考这个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;
            }
        });

【讨论】:

    【解决方案3】:

    使用这个:

     android:maxLines="5"
    

    xml 文件的属性。然后滚动条属性就会起作用。

    【讨论】:

      【解决方案4】:
      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】:

        你的 xml 文件使用:

        android:maxLines="5"
        

        【讨论】:

          【解决方案6】:
          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;
              }
          });
          

          【讨论】:

            【解决方案7】:

            在xml文件中使用:

            android:maxLines="5" android:scrollbars = "垂直"

            并在 .java 文件中添加

            edt_text.setMovementMethod(new ScrollingMovementMethod());

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-02-20
              • 1970-01-01
              • 2020-11-13
              • 1970-01-01
              • 1970-01-01
              • 2015-10-19
              • 2011-11-10
              • 1970-01-01
              相关资源
              最近更新 更多