2016-04-11 61 views
8

アンドロイドサポートで新しいBottomSheetを試しました。 BottomSheetの中に私はTextViewScrollViewを入れました。 BottomSheetはうまく表示されていますが、私が見つけた唯一の問題はBottomSheetScrollViewがスクロールしていないことです。私がスクロールしようとするたびに、メインアクティビティのレイアウトがスクロールしたり、BottomSheetの状態が崩壊から展開に変わります。Androidのボトムシートでスクロールしない

これは私のActivityクラスのコードの抜粋です:

private BottomSheetBehavior behavior; 
View bottomSheet; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    setTextViewOnClickListener(this, findViewById(R.id.parentLayout)); 

    CoordinatorLayout coordinatorLayout = (CoordinatorLayout) findViewById(R.id.main_content); 

    // The View with the BottomSheetBehavior 
    bottomSheet = coordinatorLayout.findViewById(R.id.bottom_sheet); 
    behavior = BottomSheetBehavior.from(bottomSheet); 
    behavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { 
     @Override 
     public void onStateChanged(@NonNull View bottomSheet, int newState) { 
      // React to state change 


     } 


     @Override 
     public void onSlide(@NonNull View bottomSheet, float slideOffset) { 
      // React to dragging events 
     } 
    }); 

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.tv1: 
      setTextViewHeader("Header1"); 
      setTextViewContent("Long_Text_1"); 

      break; 

     case R.id.tv2: 
      setTextViewHeader("Header2"); 
      setTextViewContent("Long_Text_2"); 

      break; 

     case R.id.tv3: 
      setTextViewHeader("Header3"); 
      setTextViewContent("Long_Text_3"); 

      break; 

     default: 
      break; 
    } 

    behavior.setPeekHeight(100); 
    behavior.setState(BottomSheetBehavior.STATE_COLLAPSED); 
    behavior.setHideable(true); 

    bottomSheet.requestLayout(); 
} 

これは私のレイアウトxmlです:

<?xml version="1.0" encoding="utf-8"?> 

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 


    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:layout_scrollFlags="scroll|enterAlways" 
     app:popupTheme="@style/AppTheme.PopupOverlay" /> 


</android.support.design.widget.AppBarLayout> 


<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/tv1" 
     style="@style/LightRow" 
     android:text="some_long_text_here" /> 

    <TextView 
     android:id="@+id/tv2" 
     style="@style/DarkRow" 
     android:text="another_long_text_here" /> 

    <TextView 
     android:id="@+id/tv3" 
     style="@style/LightRow" 
     android:text="another_long_text_here" /> 
</LinearLayout> 

<android.support.v4.widget.NestedScrollView 
    android:id="@+id/bottom_sheet" 
    android:layout_width="match_parent" 
    android:layout_height="250dp" 
    app:behavior_hideable="true" 
    android:fillViewport="true" 
    app:layout_behavior="android.support.design.widget.BottomSheetBehavior"> 


    <android.support.v7.widget.LinearLayoutCompat 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#FF7733" 
     android:orientation="vertical"> 


     <TextView 
      android:id="@+id/tvID1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="HEADER" 
      android:textAppearance="?android:attr/textAppearanceMedium" /> 

     <ScrollView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="9" 
      android:background="#ffb773" 
      android:fillViewport="true"> 


      <TextView 
       android:id="@+id/tvID2" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:background="#3377ff" 
       android:textAppearance="?android:attr/textAppearanceSmall" /> 
     </ScrollView> 


    </android.support.v7.widget.LinearLayoutCompat> 

</android.support.v4.widget.NestedScrollView> 

助けてください。

おかげでカスタムボトムシートの挙動

public class CustomBottomSheetBehaviour<V extends View> extends BottomSheetBehavior { 
    public CustomBottomSheetBehaviour() { 
     super(); 
    } 

    public CustomBottomSheetBehaviour(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    @Override 
    public boolean onInterceptTouchEvent(CoordinatorLayout parent, View child, MotionEvent event) { 
     return false; 
    } 
} 
+0

をレイアウトのためにあなたのコードを投稿してください。 、私たちが確認できるように。また、 'ScrollView'が動作するためには、その下に子が1つしかありません。 –

+0

あなたが試したことを示してください – Pooya

+0

私の質問にいくつかのコードを追加しました。どうぞご覧ください。解決方法を教えてください – asiansaga

答えて

-1

使用すると、あなたが今ではこれを考え出したホープが、NestedScrollView bottomSheetView bottomSheetを変更します。

4

以下

0

私は物事の下に行うことで問題を解決 -

  • まず:あなたはCoordinatorLayoutを使用しているときは、ユーザーNestedScrollViewより良いCoordinatorLayoutとその作品代わりにScrollViewを使用しないでください。

  • 第二:は、例えば下部にandroid:layout_heightで空白のビューを置くが、あなたの内側NestedScrollView -

    <LinearLayout 
        android:layout_height="wrap_content" 
        android:layout_width="match_parent" 
        android:orientation="vertical"> 
    
        <ImageView 
         android:background="@drawable/username" 
         android:id="@+id/userImage_info_search" 
         android:layout_gravity="center" 
         android:layout_height="100dp" 
         android:layout_margin="20dp" 
         android:layout_width="100dp" /> 
    
        <LinearLayout 
         android:layout_height="wrap_content" 
         android:layout_width="match_parent"> 
    
        <View 
         android:background="@android:color/black" 
         android:layout_height="1dp" 
         android:layout_width="match_parent"></View> 
    </LinearLayout> 
    
    <LinearLayout 
        android:layout_height="wrap_content" 
        android:layout_width="match_parent" 
        android:orientation="horizontal" 
        android:padding="10dp" 
        android:weightSum="3"> 
    
        <TextView 
         style="@style/Bottomsheetstyle" 
         android:id="@+id/txtNamelabel_info_search" 
         android:layout_gravity="center" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="10dp" 
         android:layout_weight="1" 
         android:layout_width="0dp" 
         android:text="Name" /> 
    
        <TextView 
         style="@style/Bottomsheetstyle" 
         android:id="@+id/txtName_info_search" 
         android:layout_gravity="center" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="10dp" 
         android:layout_weight="2" 
         android:layout_width="0dp" 
         android:text="" /> 
    
    
    </LinearLayout> 
    
    <LinearLayout 
        android:layout_height="wrap_content" 
        android:layout_width="match_parent"> 
    
        <View 
         android:background="@android:color/black" 
         android:layout_height="1dp" 
         android:layout_width="match_parent"></View> 
    </LinearLayout> 
    
    <LinearLayout 
        android:layout_height="wrap_content" 
        android:layout_width="match_parent" 
        android:orientation="horizontal" 
        android:padding="10dp" 
        android:weightSum="3"> 
    
        <TextView 
         style="@style/Bottomsheetstyle" 
         android:layout_gravity="center" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="10dp" 
         android:layout_weight="1" 
         android:layout_width="0dp" 
         android:text="Number" /> 
    
        <LinearLayout 
         android:layout_height="wrap_content" 
         android:layout_weight="2" 
         android:layout_width="0dp" 
         android:orientation="horizontal"> 
    
         <TextView 
          style="@style/Bottomsheetstyle" 
          android:gravity="center_vertical" 
          android:id="@+id/txtNumber_info_search" 
          android:layout_gravity="center_vertical" 
          android:layout_height="wrap_content" 
          android:layout_marginLeft="10dp" 
          android:layout_weight="1.4" 
          android:layout_width="0dp" 
          android:text="+XX (XXX) XXX-XXXX" /> 
    
         <ImageView 
          android:background="@drawable/call_save" 
          android:id="@+id/call_info_search" 
          android:layout_height="wrap_content" 
          android:layout_weight="0.3" 
          android:layout_width="0dp" /> 
    
         <View 
          android:layout_gravity="center" 
          android:layout_height="5dp" 
          android:layout_width="5dp"></View> 
    
         <ImageView 
          android:background="@drawable/comment_save" 
          android:id="@+id/sms_info_search" 
          android:layout_height="wrap_content" 
          android:layout_weight="0.3" 
          android:layout_width="0dp" /> 
    
    
        </LinearLayout> 
    
    
    </LinearLayout> 
    
    <LinearLayout 
        android:layout_height="wrap_content" 
        android:layout_width="match_parent"> 
    
        <View 
         android:background="@android:color/black" 
         android:layout_height="1dp" 
         android:layout_width="match_parent"></View> 
    </LinearLayout> 
    
    <LinearLayout 
        android:layout_height="wrap_content" 
        android:layout_width="match_parent" 
        android:orientation="horizontal" 
        android:padding="10dp" 
        android:weightSum="3"> 
    
        <TextView 
         style="@style/Bottomsheetstyle" 
         android:layout_gravity="center" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="10dp" 
         android:layout_weight="1" 
         android:layout_width="0dp" 
         android:text="Email" /> 
    
        <TextView 
         style="@style/Bottomsheetstyle" 
         android:id="@+id/txtEmail_info_search" 
         android:layout_gravity="center" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="10dp" 
         android:layout_weight="2" 
         android:layout_width="0dp" 
         android:text="" /> 
    
    
    </LinearLayout> 
    
    <LinearLayout 
        android:layout_height="wrap_content" 
        android:layout_width="match_parent"> 
    
        <View 
         android:background="@android:color/black" 
         android:layout_height="1dp" 
         android:layout_width="match_parent"></View> 
    </LinearLayout> 
    
    <View 
        android:background="@android:color/transparent" 
        android:layout_height="@dimen/somedp" 
        android:layout_width="match_parent" /> 
    

+0

どうしますか?私はjava.lang.IllegalStateExceptionを取得しています:ScrollViewはただ1つの直接の子をホストできます – Ruben2112

関連する問題