Android:BottomSheetDialog中的多行文本EditText

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android:BottomSheetDialog中的多行文本EditText相关的知识,希望对你有一定的参考价值。

我有一个底部对话框,并在布局中存在EditText。 EditText是多行,最大行是3.我把:

commentET.setMovementMethod(new ScrollingMovementMethod());
commentET.setScroller(new Scroller(bottomSheetBlock.getContext()));
commentET.setVerticalScrollBarEnabled(true);

但是当用户将开始垂直滚动EditText文本时,BottomSheetBehavior拦截事件和EditText将不会垂直滚动。

enter image description here

有谁知道如何解决这个问题?

答案

这是一个简单的方法。

yourEditTextInsideBottomSheet.setOnTouchListener(new OnTouchListener() {
  public boolean onTouch(View v, MotionEvent event) {
        v.getParent().requestDisallowInterceptTouchEvent(true);
        switch (event.getAction() & MotionEvent.ACTION_MASK){
        case MotionEvent.ACTION_UP:
            v.getParent().requestDisallowInterceptTouchEvent(false);
            break;
        }
        return false;
   }
});
另一答案

我用以下方法解决了这个问题:

  1. 我创建自定义工作围绕底部表单行为扩展本机android BottomSheetBehaviorpublic class WABottomSheetBehavior<V extends View> extends BottomSheetBehavior<V> { private boolean mAllowUserDragging = true; public WABottomSheetBehavior() { super(); } public WABottomSheetBehavior(Context context, AttributeSet attrs) { super(context, attrs); } public void setAllowUserDragging(boolean allowUserDragging) { mAllowUserDragging = allowUserDragging; } @Override public boolean onInterceptTouchEvent(CoordinatorLayout parent, V child, MotionEvent event) { if (!mAllowUserDragging) { return false; } return super.onInterceptTouchEvent(parent, child, event); } }
  2. 然后设置EditText的触摸事件,当用户触摸EditText区域时,我将通过调用方法setAllowUserDragging禁用处理事件: commentET.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { if (v.getId() == R.id.commentET) { botSheetBehavior.setAllowUserDragging(false); return false; } return true; } });

以上是关于Android:BottomSheetDialog中的多行文本EditText的主要内容,如果未能解决你的问题,请参考以下文章

Android使用BottomSheetBehavior 和 BottomSheetDialog实现底部弹窗

Android使用BottomSheetBehavior 和 BottomSheetDialog实现底部弹窗

Android BottomSheetDialog设置背景透明无效?(解决)

Android BottomSheetDialog设置背景透明无效?(解决)

Android:BottomSheetDialog中的多行文本EditText

Android MVVM框架搭建高德地图定位天气查询BottomSheetDialog