Ibr*_*waz 5 android swipe-gesture bottom-sheet
我已经成功地ListView
在一个Fragment
. 从列表中,我还设法成功加载了底部工作表。
如果我点击列表“一个”中的第一项,则会出现底部工作表。
如果我点击底部工作表的外部,底部工作表就会消失。
如果我点击列表中的第二个项目“Two”,底部的表格会再次出现。
如果我再次执行 1) 然后向下滑动底部工作表并尝试执行 3),屏幕将保持灰色,就好像底部工作表仍然显示但不可见...... ???
我该如何纠正?
下面是我的代码。
SecondFragment.java
:
/**
* A simple {@link Fragment} subclass.
*/
public class SecondFragment extends Fragment {
public SecondFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_second, container, false);
String[] faList = {
"One",
"Two",
};
ListView listView = (ListView) view.findViewById(R.id.listFa);
ArrayAdapter<String> listviewAdapter = new ArrayAdapter<String>(
getActivity(),
android.R.layout.simple_list_item_1,
faList
);
listView.setAdapter(listviewAdapter);
// Inflate the layout for this fragment
// return view;
final BottomSheetDialog bottomsheet = new BottomSheetDialog(this.getContext());
View bottomSheetView = inflater.inflate(R.layout.bottom_sheet, null);
bottomsheet.setContentView(bottomSheetView);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
bottomsheet.show();
}
});
return view;
}
}
Run Code Online (Sandbox Code Playgroud)
fragment_second.xml
:
<FrameLayout 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"
tools:context="com.ifavaz.talker.SecondFragment">
<!-- TODO: Update blank fragment layout -->
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listFa" />
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
bottom_sheet.xml
:
<FrameLayout 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="match_parent"
android:gravity="right"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="30dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_marginTop="30dp">
<FrameLayout
android:layout_width="280dp"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="text is my text is my text text is my text is my text text is my text is my text text is my text is my text "
android:textSize="18sp"
android:textAlignment="textStart"
android:paddingRight="30dp" />
</FrameLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_marginTop="30dp">
<FrameLayout
android:layout_width="280dp"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="text is my text is my text text is my text is my text text is my text is my text text is my text is my text "
android:textSize="18sp"
android:paddingRight="30dp" />
</FrameLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_marginTop="30dp">
<FrameLayout
android:layout_width="280dp"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="text is my text is my text text is my text is my text text is my text is my text text is my text is my text "
android:textSize="18sp"
android:textAlignment="textStart"
android:paddingRight="30dp" />
</FrameLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_marginTop="30dp">
<FrameLayout
android:layout_width="280dp"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="text is my text is my text text is my text is my text text is my text is my text text is my text is my text "
android:textSize="18sp"
android:textAlignment="textStart"
android:paddingRight="30dp" />
</FrameLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
我从这篇文章中得到了它的工作,您将需要作为片段/活动内的根布局 CoordinatorLayout 其行为 --> "android.support.design.widget.BottomSheetBehavior" ,它的工作方式是扩展 BottomSheetDialogFragment 并显示它来自您的活动/片段,如下所示
TutsPlusBottomSheetDialogFragment fragment = new TutsPlusBottomSheetDialogFragment();
fragment.show(getSupportFragmentManager(),bottomSheetDialogFragment.getTag());
Run Code Online (Sandbox Code Playgroud)
这个自定义DialogFragment的实现是:
public class TutsPlusBottomSheetDialogFragment extends BottomSheetDialogFragment {
private BottomSheetBehavior.BottomSheetCallback mBottomSheetBehaviorCallback = new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
if (newState == BottomSheetBehavior.STATE_HIDDEN) {
dismiss();
}
}
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
}
};
@Override
public void setupDialog(Dialog dialog, int style) {
super.setupDialog(dialog, style);
View contentView = View.inflate(getContext(), R.layout.bottom_sheet, null);
dialog.setContentView(contentView);
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) ((View) contentView.getParent()).getLayoutParams();
CoordinatorLayout.Behavior behavior = params.getBehavior();
if( behavior != null && behavior instanceof BottomSheetBehavior ) {
((BottomSheetBehavior) behavior).setBottomSheetCallback(mBottomSheetBehaviorCallback);
}
}
Run Code Online (Sandbox Code Playgroud)
}
归档时间: |
|
查看次数: |
10679 次 |
最近记录: |