J'ai essayé la nouvelle BottomSheet
dans le support Android. Dans la BottomSheet
j'ai mis une TextView
et une ScrollView
. Le BottomSheet
sant parfait, le seul problème que j'ai trouvé est que le ScrollView
dans le BottomSheet
ne défile pas. Chaque fois que j'essaie de faire défiler, la présentation dans l'activité principale qui défile ou la variable BottomSheet
à partir de la réduction pour la développer.
voici l'extrait de mon code de classe d'activité:
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();
}
Ceci est ma mise en page xml:
<?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout 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/main_content"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true"
tools:context="com.rapidgrowsolutions.Android.MainActivity">
<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>
S'il vous plaît aider.
Merci
J'espère que vous avez compris cela maintenant, mais changez View bottomSheet
en NestedScrollView bottomSheet
.
Utiliser ci-dessous le comportement personnalisé de la feuille de fond
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;
}
}
Pas encore vérifié si la réponse de @Aghil C M fonctionnait, mais l'a traduite en kotlin car la traduction automatique ne faisait pas l'affaire.
class CustomBottomSheetBehaviour<V : View> : BottomSheetBehavior<V> {
constructor() : super()
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
override fun onInterceptTouchEvent(parent: CoordinatorLayout?, child: V, event: MotionEvent?): Boolean {
return false
}
}
J'ai résolu le problème en faisant ci-dessous des choses -
Tout d'abord: n'utilisez pas ScrollView lorsque vous utilisez CoordinatorLayout, mais l'utilisateur NestedScrollView fonctionne beaucoup mieux avec CoordinatorLayout.
Deuxièmement: mettez une vue vierge avec Android:layout_height
en bas, mais à l'intérieur de vous NestedScrollView , Par exemple -
<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" />