gpt4 book ai didi

android - 从 BottomSheetDialog 获取 BottomSheetBehaviour

转载 作者:搜寻专家 更新时间:2023-11-01 07:49:23 25 4
gpt4 key购买 nike

这是我的 BottomSheetDialog 布局。我里面也有一个网格布局。该网格布局的滚动不正确。我的意思是它仅在 BottomSheetDialog 的展开状态下滚动。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_behavior="@string/bottom_sheet_behavior"
>

<LinearLayout
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/view_padding_medium"
android:gravity="center_vertical">

<ImageView
android:layout_width="@dimen/profile_image"
android:layout_height="@dimen/profile_image"
android:src="@drawable/icon" />

<TextView
android:id="@+id/title1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/view_padding_medium"
android:text="@string/smart_action_share"
android:textColor="@color/white"
/>
</LinearLayout>



<GridView
android:id="@+id/gridView11"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:numColumns="3"
>

</GridView>


</LinearLayout>

这是我创建 Bottom Sheet 对话框的方式:

BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(context);
LayoutInflater inflater = ((Activity) Constants.getContext()).getLayoutInflater();

View view = inflater.inflate(R.layout.dialog_share1, null);

bottomSheetDialog.setContentView(view);

final GridView grid = (GridView) view.findViewById(R.id.gridView11);

CustomAdapter adapter = new CustomAdapter (context);
grid.setAdapter(adapter);

bottomSheetDialog.show();

如何访问对话框的行为以便我可以修复网格布局滚动或者是否有任何其他方法可以修复它?

只是为了让一切都清楚:无论 Bottom Sheet 的状态如何,每次都应启用 GridView 滚动。

最佳答案

Grid view scroll should be enabled everytime irrespective of the state of bottom sheet.

我认为您不应该这样做,因为 BottomSheet 高度应该与内容的高度相匹配。

这意味着如果内容是可滚动的并且超过父级的高度,则滚动将仅在 BottomSheet 由于默认行为而展开时才起作用,这是有道理的。

要访问该行为,您可以执行以下操作:

View view = inflater.inflate(R.layout.dialog_share1, null);
bottomSheetDialog.setContentView(view);

BottomSheetBehavior behavior = BottomSheetBehavior.from((View) view.getParent());

然后,自定义不同于展开状态的行为:

behavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {

@Override
public void onStateChanged(@NonNull View bottomSheet,
@BottomSheetBehavior.State int newState) {
if (newState == BottomSheetBehavior.STATE_HIDDEN) {
dismiss();
}else{
if (newState != BottomSheetBehavior.STATE_EXPANDED) {
// Implement your logic here
}
}
}

@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset){

}
};

关于android - 从 BottomSheetDialog 获取 BottomSheetBehaviour,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37322251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com