アンドロイドサポートで新しいBottomSheet
を試しました。 BottomSheet
の中に私はTextView
とScrollView
を入れました。 BottomSheet
はうまく表示されていますが、私が見つけた唯一の問題はBottomSheet
のScrollView
がスクロールしていないことです。私がスクロールしようとするたびに、メインアクティビティのレイアウトがスクロールしたり、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;
}
}
をレイアウトのためにあなたのコードを投稿してください。 、私たちが確認できるように。また、 'ScrollView'が動作するためには、その下に子が1つしかありません。 –
あなたが試したことを示してください – Pooya
私の質問にいくつかのコードを追加しました。どうぞご覧ください。解決方法を教えてください – asiansaga