Установка фиксированной высоты и закругленных углов с помощью BottomSheetFragment
Я пытался установить фрагмент макета нижнего листа фиксированной высоты, не расширяемый, с закругленными углами.
Я нашел похожие вопросы stackru, в которых предлагалось установить высоту просмотра (setPeekHeight()) и приведенный ниже xml-код для установки закругленных углов с помощью методов setStyle(). Оба они мне не подошли. Как установить нижний лист фиксированной высоты без возможности расширения или перетаскивания с закругленными углами?
public class DiscoverFragment extends BaseBottomSheetDialogFragment implements Observer<DiscoverViewModelState>, OnDiscoverSelectedListener {
@BindView(R2.id.discover)
LinearLayout lDiscoverLayout;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(STYLE_NORMAL, R2.style.CaAppTheme);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
lView = inflater.inflate(com.misc.device.R.layout.fragment_discover, container, false);
ButterKnife.bind(this, lView);
/* Set the layout gravity to Bottom */
CoordinatorLayout.LayoutParams layoutParams = new CoordinatorLayout.LayoutParams(lDiscoverLayout.getLayoutParams());
layoutParams.gravity = Gravity.BOTTOM;
lDiscoverLayout.setLayoutParams(layoutParams);
return lView;
}
@NotNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
lSheet = super.onCreateDialog(savedInstanceState);
lSheet.setOnShowListener(dialogInterface -> {
BottomSheetDialog d = (BottomSheetDialog) lSheet;
FrameLayout bottomSheet = d.findViewById(R.id.design_bottom_sheet);
BottomSheetBehavior.from(bottomSheet).setHideable(false);
//BottomSheetBehavior.from(bottomSheet).setPeekHeight(this.getResources().getDimensionPixelSize(R.dimen.peek_height));
});
return lSheet;
}
}
fragment_discover.xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/layout_po_background_color"
android:layoutDirection="locale"
android:orientation="vertical">
<LinearLayout
android:id="@+id/discover"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/ca"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="17dp"
android:text="@string/ca"
android:textAlignment="center"
android:textColor="@color/gray_color"
android:textSize="@dimen/size_12"
android:visibility="gone"
android:textStyle="bold" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/discovered"
android:layout_width="match_parent"
android:layout_height="145dp"
android:layout_marginTop="@dimen/margin"
tools:listitem="@layout/item_discovered" />
<ProgressBar
android:id="@+id/progress"
style="?android:attr/progressBarStyleSmall"
android:layout_width="@dimen/progress_bar"
android:layout_height="@dimen/progress_bar"
android:layout_gravity="center"
android:layout_marginTop="@dimen/margin"
android:indeterminate="true"
android:progressBackgroundTint="#606067"
android:progressTint="#8e8e93" />
<TextView
android:id="@+id/state_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="17dp"
android:gravity="center"
android:paddingStart="@dimen/margin"
android:paddingEnd="@dimen/margin"
android:text="@string/progress_message"
android:textColor="@color/black_color"
android:textSize="@dimen/ca_size"
android:visibility="visible" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/error_action"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="12dp"
android:layout_marginBottom="100dp"
android:background="@color/action_background"
android:padding="@dimen/action_size"
android:textColor="@color/white"
tools:text="@string/expo_turn_bluetooth_on_label" />
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
styles.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CaAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="bottomSheetDialogTheme">@style/DialogTheme</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsFloating">true</item>
</style>
<style name="DialogTheme"
parent="Theme.Design.Light.BottomSheetDialog">
<item name="bottomSheetStyle">@style/ModalStyle</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
<style name="ModalStyle"
parent="Widget.Design.BottomSheet.Modal">
<item name="android:background">@drawable/ca_round_corners</item>
<item name="behavior_peekHeight">50dp</item>
</style>
</resources>
ca_round_corners.xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:topLeftRadius="24dp"
android:topRightRadius="24dp"/>
<solid android:color="@color/white"/>
</shape>