Быстрые настройки Android, такие как реализация с нижним листом

45
4

Мне нужно реализовать пользовательский вид так же, как быстрые настройки, доступные на панели уведомлений с моими элементами. Я сделал часть R & D, которую я поделюсь здесь. Поскольку эта вещь должна быть размещена в нижней части экрана, поэтому я интегрировал внутри нижнего листа. До этого я добавлю снимок экрана, из которого мне нужно создать аналогичный вид пользовательского вида.

View while the items are collapsed

View while the items are expanded

Теперь это должно быть интегрировано с нижним листом, поэтому добавление части R & D, сделанной ниже, с нижним листом:

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) {

}
}
}

Google google через различные сайты я не нашел никакой помощи в том, как реализовать пользовательские или наши собственные быстрые настройки, такие как представления. Я достиг того, что требуется до определенного уровня, но нуждаюсь в некоторой помощи для достижения 100%. Мне нужно реализовать такое представление, которое показывает некоторые элементы по умолчанию и остальные элементы расширения, которые я мог бы связать с доступной опцией " Быстрые настройки".

Любая помощь будет заметна.

Заранее спасибо.

спросил(а) 2018-07-12T12:40:00+03:00 1 год, 4 месяца назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема