2016-04-11 14 views
8

Ich versuchte die neue BottomSheet in Android-Unterstützung. Innerhalb der BottomSheet habe ich eine TextView und eine ScrollView gesetzt. Die BottomSheet zeigt nur gut, das einzige Problem, das ich fand, ist, dass die ScrollView in der BottomSheet nicht scrollt. Jedes Mal, wenn ich versuche zu scrollen, entweder das Layout in der Haupttätigkeit, die Scroll oder die BottomSheet Zustand von Collapse ändern, um zu erweitern.Scrollview scrollt nicht in Android Unterseite

das ist Snippet meiner Aktivität Class Code:

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(); 
} 

Das ist mein Plan 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> 

Bitte helfen.

Dank

+0

Bitte schreiben Sie den Code für das Layout , damit wir es überprüfen können. Damit 'ScrollView' funktioniert, sollte es nur ein Kind enthalten. –

+0

zeigen, was Sie versucht haben – Pooya

+0

Ich habe einige Code in meiner Frage, können Sie bitte einen Blick und geben Lösungen – asiansaga

Antwort

-1

Verwendung unter benutzerdefinierten unteren Blatt Verhalten

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; 
    } 
} 
4

Hoffe, dass Sie dies jetzt herausgefunden, aber View bottomSheet-NestedScrollView bottomSheet ändern.

0

löste ich das Problem, indem unter Dinge zu tun -

  • Erstens: Sie Scroll nicht verwenden, wenn Sie CoordinatorLayout stattdessen Benutzer NestedScrollView seine Werke viel besser mit CoordinatorLayout verwenden.

  • Zweitens: legte eine leere Ansicht mit android:layout_height am Boden, aber in dir NestedScrollView zB -

    <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

Wie funktioniert das? Ich erhalte eine java.lang.IllegalStateException: ScrollView kann nur ein direktes Kind hosten – Ruben2112

Verwandte Themen