我正在使用BottomSheetBehaviour
进行共享功能。
我正在尝试实现以下功能
Share
按钮时,我想将BottomSheet
高度修改为screenHeight/2
BottomSheet
时,我想增加BottomSheet
的高度,类似于WrapContent
BottomSheet
因为我是新手而非常混乱。任何人都可以指导我或提供任何参考。
代码:
的xml:
<LinearLayout
android:layout_gravity="center"
android:layout_width="400dp"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:orientation="vertical"
app:behavior_hideable="true"
app:behavior_peekHeight="0dp"
android:layout_marginBottom="20dp"
android:id="@+id/bottom_sheet"
android:background="@android:color/white"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:textSize="25dp"
android:textStyle="bold"
android:text="Share via..."/>
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@null"
android:id="@+id/listview"/>
</LinearLayout>
的java:
View bottom_sheet;
BottomSheetBehavior bSheet
ListView listview;`
bottom_sheet=getActivity().findViewById(R.id.bottom_sheet);
bSheet= BottomSheetBehavior.from(bottom_sheet);
listView= (ListView) getActivity().findViewById(R.id.listview);
分享代码:
public void shareKnapp() {
bSheet.setHideable(true);
if(bSheet.getState()==BottomSheetBehavior.STATE_EXPANDED){
bSheet.setState(BottomSheetBehavior.STATE_COLLAPSED);
}else{
bSheet.setState(BottomSheetBehavior.STATE_EXPANDED);
}
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//Share funtionality
});
}
答案 0 :(得分:0)
如果您希望BottomSheetBehaviour
恰好是屏幕的一半,可以先获取显示尺寸,然后按如下所示进行设置:
Display display = getWindowManager().getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
int screenHeight = metrics.heightPixels;
bSheet.setPeekHeight(screenHeight);
您现在可以将默认状态设置为STATE_HIDDEN
,并通过单击bSheet.setState(BottomSheetBehavior.STATE_COLLAPSED);
在共享按钮上显示它。
现在,如果底部有一个ListView
,则当用户拖动它时它应该自动滚动。
另外,我会考虑看看BottomSheetDialogFragment
,因为它几乎可以满足您的需求。如果屏幕上有一个需要从底部滚动的固定部分(并且并非一直隐藏),则BottomSheetBehaviour
很有用。