0

ViewPager가 LinearLayout 안에 있습니다. 다음 조각 (오른쪽에서 왼쪽으로)으로 스 와이프하면 올바르게 작동하고, 어떤 장소에서나 화면을 터치 할 수 있으며 작동합니다.ViewPager : 왼쪽에서 오른쪽으로 스 와이프 할 때의 문제

enter image description here

내 XML :

나는 왼쪽에서 오른쪽으로 swipping, 이전 조각에 백업 할 때, 그것은 (그림에 노란색 영역) 화면 왼쪽에 좁은 부분에서만 작동 글고 치기와 텍스트 뷰와 내 조각에서
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/palette_bg" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:weightSum="1" 
    android:windowSoftInputMode="adjustPan"> 

    <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.15" 
     android:windowSoftInputMode="adjustPan" 
     tools:context="com.internet_of_everything.chineesecards.MainActivity"> 
    </android.support.v4.view.ViewPager> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginBottom="2dp" 
     android:layout_marginLeft="2dp" 
     android:layout_marginRight="2dp" 
     android:layout_marginTop="2dp" 
     android:layout_weight="0.85" 
     android:baselineAligned="false" 
     android:orientation="horizontal" 
     android:visibility="visible" 
     android:weightSum="1"> 

     <ImageButton 
      android:id="@+id/button_back" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.5" 
      android:background="?android:attr/windowBackground" 
      android:contentDescription="@android:string/untitled" 
      android:visibility="visible" 
      app:srcCompat="@drawable/button_back" /> 

     <ImageButton 
      android:id="@+id/button_next" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.5" 
      android:adjustViewBounds="false" 
      android:background="?android:attr/windowBackground" 
      android:contentDescription="@android:string/untitled" 
      android:elevation="0dp" 
      android:visibility="visible" 
      app:srcCompat="@drawable/button_next" /> 
    </LinearLayout> 
</LinearLayout> 

UPDATE 나는이 선형 레이아웃을 가지고있다. 같은 시간에 EditText 또는 TextView 만 표시 될 수 있습니다. 그리고 나는 onTouchListener를 가지고 있습니다 : EditText가 보여 질 때 키보드를 숨기고 사용자가이 edittext 바깥을 클릭 할 때 EditText의 내용을 검사합니다. 이 onTouchListener를 사용하여 왼쪽에서 오른쪽으로 스 와이프 할 때의 문제를 해결할 수 있습니까?

public class OneCardFragment extends Fragment { 

    public OneCardFragment() { 
     // Required empty public constructor 
    } 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     rootView.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       InputMethodManager imm = (InputMethodManager) getContext().getSystemService(INPUT_METHOD_SERVICE); 
       //hides keyboard 
       imm.hideSoftInputFromWindow(rootView.getWindowToken(), 0); 
       //checks edittext content 
      } 
     }); 
    } 
} 
+1

저는 ViewPager 문제가 아니라고 생각합니다. 두 번째 조각의 레이아웃을 확인하고 청취자를 클릭하십시오. 이전에 터치 이벤트를 사용하는 일부보기 일 수 있으며 스 와이프 제스처를 방지 할 수 있습니다. –

+0

맞아, 내 조각에 onTouchListener가 있습니다. 내 질문에 대한 약간의 내용으로 업데이트했습니다. – Olga

+2

메소드'boolean onTouch (View v, MotionEvent 이벤트)'의 내부에서'true '를 리턴합니까? yes이면'false'를 반환하고 다른 뷰는 이벤트를 처리 할 기회를 가질 수 있습니다. –

답변

0

false 또 다른보기가 이벤트를 처리 할 수있는 기회를 가질 수 있습니다.

public class OneCardFragment extends Fragment { 

    public OneCardFragment() { 
     // Required empty public constructor 
    } 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     rootView.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       InputMethodManager imm = (InputMethodManager) getContext().getSystemService(INPUT_METHOD_SERVICE); 
       //hides keyboard 
       imm.hideSoftInputFromWindow(rootView.getWindowToken(), 0); 
       //checks edittext content 
       return false; 
      } 
     }); 
    } 
}