Добавить нижнюю информационную панель после последней карты с помощью CardView - PullRequest
0 голосов
/ 28 января 2020

Im looking to achieve something like on the image.

Я хочу добавить некоторый элемент представления (это действительно не имеет значения, это может быть TextView, Button, что угодно) в нижней части экран (над моим BottomNavigationBar), чтобы показать некоторую информацию (оранжевая область на картинке). Я пытался реализовать BottomAppBar, но эта панель относится к каждой карточке в представлении карточки, но я хочу, чтобы она отображалась только один раз после последней представленной карточки.

Вот мой XML этого представления:

<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView android:id="@+id/basket_view"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    app:cardCornerRadius="10dp"
    app:cardElevation="2dp"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:strokeWidth="2dp"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/constraint_layout"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="5dp"
        android:layout_marginStart="5dp"
        android:layout_width="match_parent">

        <ImageView
            android:adjustViewBounds="true"
            android:id="@+id/basket_image"
            android:layout_height="72dp"
            android:layout_width="110dp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:srcCompat="@mipmap/ic_launcher" />

        <TextView
            style="@style/TextAppearance.MaterialComponents.Headline6"
            android:id="@+id/comp_title"
            android:layout_height="wrap_content"
            android:layout_marginStart="8dp"
            android:layout_width="wrap_content"
            android:text="description"
            app:layout_constraintStart_toEndOf="@+id/basket_image"
            app:layout_constraintTop_toTopOf="@+id/basket_image" />

        <com.google.android.material.button.MaterialButton
            style="@style/Widget.MaterialComponents.Button.TextButton"
            android:id="@+id/remove_btn"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_width="wrap_content"
            android:text="@string/remove"
            android:textAppearance="@style/TextAppearance.MaterialComponents.Headline6"
            android:textSize="12sp"
            app:layout_constraintBottom_toBottomOf="@+id/basket_image"
            app:layout_constraintEnd_toEndOf="parent" />

        <TextView
            android:id="@+id/some_title"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="anotherInfo"
            app:layout_constraintBottom_toBottomOf="@+id/remove_btn"
            app:layout_constraintStart_toStartOf="@+id/comp_title" />

        <TextView
            android:id="@+id/some_text_value"
            android:layout_height="wrap_content"
            android:layout_marginStart="8dp"
            android:layout_width="wrap_content"
            android:text="someTxt"
            app:layout_constraintStart_toEndOf="@+id/some_title"
            app:layout_constraintTop_toTopOf="@+id/some_title" />
    </androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>

Я попытался реализовать некоторые логики c в своем классе адаптеров, например:

@Override
    public void onBindViewHolder(@NonNull OrderRecyclerViewHolder holder, int position) {
        holder.bind(data, position);
    }

    public void bind(Data data, int position) {
            if (data != null) {
               if(data.size() == (position + 1)) {
                   //some methods to set bottom bar to be Visible
                }
                compTitle.setText(...);
                basketImage.setBackgroundResource(...);
           }
      }

, но не повезло. Не могли бы вы дать мне какой-нибудь совет или, может быть, для этого есть какой-то элемент? Спасибо.

1 Ответ

0 голосов
/ 28 января 2020

Я сделал это, добавив различные типы ViewHolder'ов моего RecyclerView и, в соответствии с его типами, создал дополнительный вид элемента для нижнего колонтитула (или заголовка). Если кому-то нужна дополнительная информация - сообщите мне и вставьте здесь мой код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...