Мне нужно реализовать пользовательский вид так же, как быстрые настройки, доступные на панели уведомлений с моими элементами. Я сделал часть исследований и разработок, которыми я поделюсь здесь. Поскольку эта вещь должна быть размещена в нижней части экрана, я интегрировал вид нижнего листа. Перед этим я добавлю скриншот вида, для которого мне нужно создать аналогичный пользовательский вид.
Теперь это должно быть интегрировано с нижним листом, поэтому добавление части НИОКР сделано ниже с видом нижнего листа:
MainActivity.java
public void initViews() {
View bottomSheet = findViewById(R.id.bottomSheet);
BottomSheetBehavior mBottomSheetBehavior = BottomSheetBehavior.from(bottomSheet);
mBottomSheetBehavior.setPeekHeight(320);
RecyclerView recyclerView = bottomSheet.findViewById(R.id.bottomSheetRecyclerView);
recyclerView.setLayoutManager(new GridLayoutManager(mContext, 4));
BottomSheetItemsAdapter bottomSheetItemsAdapter = new BottomSheetItemsAdapter(mContext, getBottomSheetItems());
recyclerView.setAdapter(bottomSheetItemsAdapter);
}
private ArrayList<String> getBottomSheetItems() {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("A");
arrayList.add("B");
arrayList.add("C");
arrayList.add("D");
arrayList.add("E");
arrayList.add("F");
arrayList.add("G");
arrayList.add("H");
arrayList.add("I");
return arrayList;
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 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">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center">
</LinearLayout>
</ScrollView>
<android.support.v4.widget.NestedScrollView
android:id="@+id/bottomSheet"
android:layout_width="match_parent"
android:layout_height="320dp"
android:clipToPadding="true"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior">
<include layout="@layout/layout_bottom_sheet" />
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
layout_bottom_sheet.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="5dp"
android:src="@drawable/ic_down_arrow"
tools:ignore="ContentDescription" />
<android.support.v7.widget.RecyclerView
android:id="@+id/bottomSheetRecyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp" />
</LinearLayout>
BottomSheetItemsAdapter.java
public class BottomSheetItemsAdapter extends RecyclerView.Adapter<BottomSheetItemsAdapter.ViewHolder> {
private Context mContext;
private ArrayList<String> bottomSheetItemsList;
public BottomSheetItemsAdapter(Context mContext, ArrayList<String> bottomSheetItemsList) {
this.mContext = mContext;
this.bottomSheetItemsList = bottomSheetItemsList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View convertView = inflater != null ? inflater.inflate(R.layout.list_items_bottom_sheet, parent, false) : null;
return new ViewHolder(convertView);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.txtTitle.setText(bottomSheetItemsList.get(position));
}
@Override
public int getItemCount() {
return bottomSheetItemsList.size();
}
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView txtTitle;
ViewHolder(View itemView) {
super(itemView);
txtTitle = itemView.findViewById(R.id.txtTitle);
}
@Override
public void onClick(View v) {
}
}
}
Погуглив на разных сайтах, я не нашел никакой помощи в том, как реализовать пользовательские или наши собственные быстрые настройки, такие как представления. Я достиг того, что требуется, до определенного уровня, но мне нужна помощь, чтобы достичь 100%. Мне нужно реализовать такое представление, которое показывает некоторые элементы по умолчанию, а остальные элементы расширяются, что я мог бы связать с доступной опцией Быстрые настройки.
Любая помощь будет ценной.
Заранее спасибо.