2016-10-24 71 views
4

我有一個底部工作表對話框,並在佈局中存在EditText。 EditText上是多,最大線爲3。我把:Android:多行文本EditText裏面BottomSheetDialog

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

但是當用戶將開始垂直滾動的EditText文本BottomSheetBehavior攔截事件的EditText不會垂直滾動。

enter image description here

有人知道如何解決這個問題?

+0

您是如何使用alertdialog或popupwindow創建此對話框的? – Jai

+0

不,這很簡單我的自定義佈局與BottomSheetBehavior –

+0

在這種情況下,您必須使用onDispatchTouchEvent將觸摸事件傳遞到您的前臺對話框,並且您可以解決此問題!你得到這樣的問題,因爲你有一些與你的BottomSheet這是越來越集中 – Jai

回答

3

這是一個簡單的方法來做到這一點。

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

我解決這個問題有以下方式:

  1. 我創建的自定義工作圍繞底層行爲擴展原生Android BottomSheetBehavior

    public 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; 
    } 
    }); 
    
+0

你是如何使用自定義行爲? – HenBoy331