Android / XML: сделать TextView в центре XML, когда RecyclerView пуст

В настоящее время я создаю приложение, которое использует RecyclerView. RecyclerView может отображать «Список пуст», если в списке нет данных. Но, что происходит, текст абсолютно в центре, но не в центре XML.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/haha"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MyHistoryList">
<TextView
    android:id="@+id/title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:maxLines="1"
    android:clickable="false"
    android:focusable="false"
    android:longClickable="false"
    android:textStyle="bold"
    android:textSize="18sp"
    android:textColor="#FFFFFF" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp">

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight=".80"
            android:gravity="start"
            android:text="Suggestion"
            android:textAllCaps="true"


   android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
            android:textColor="@color/colorAccent"
            android:textStyle="bold"
            app:fontFamily="@font/anaheim" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight=".20"
            android:gravity="start"
            android:text="Status"
            android:textAllCaps="true"

   android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
            android:textColor="@color/colorAccent"
            android:textStyle="bold"
            app:fontFamily="@font/anaheim" />
    </TableRow>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recylcerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"/>

    <TextView
        android:visibility="visible"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/emptyView"
        android:text="List is Empty"
        android:gravity="center"
        android:layout_gravity="center"
        android:textSize="30sp"/>
    </LinearLayout>
</LinearLayout>

Вот мой код Java.

if(array.length() == 0){
                            //display empty with your code.
                            emptyView.setVisibility(View.VISIBLE);
                            recyclerView.setVisibility(View.GONE);
                        }else {
                            emptyView.setVisibility(View.GONE);
                            recyclerView.setVisibility(View.VISIBLE);
                            for (int i = 0; i < array.length(); i++) {

                                //getting product object from json array
                                JSONObject userJson = array.getJSONObject(i);

                                userList.add(new User(
                                        userJson.getInt("id"),
                                        userJson.getString("name").replace("null", ""),
                                        userJson.getString("badgeid").replace("null", ""),
                                        userJson.getString("position").replace("null", ""),
                                        userJson.getString("department").replace("null", ""),
                                        userJson.getString("factory").replace("null", ""),
                                        userJson.getString("reviewer").replace("null", ""),
                                        userJson.getString("title").replace("null", ""),
                                        userJson.getString("year").replace("null", ""),
                                        userJson.getString("month").replace("null", ""),
                                        userJson.getString("suggestionwill").replace("null", ""),
                                        userJson.getString("present").replace("null", ""),
                                        userJson.getString("details").replace("null", ""),
                                        userJson.getString("benefit").replace("null", ""),
                                        userJson.getString("photo").replace("null", ""),
                                        userJson.getString("status").replace("null", ""),
                                        userJson.getString("comment").replace("null", "")
                                ));

Ниже мой текущий XML

https://scontent.fkul8-1.fna.fbcdn.net/v/t1.0-9/60515690_10216139628056609_7099924834024423424_n.jpg?_nc_cat=106&_nc_eui2=AeHvv0bzaCNYPgIufVyqiMZGqXAQPaArqTPCB4Ix5QXrob9n9jb61O1bt03p-heNH0axIeIO8cOXmEyDzgRZJxNGdYtE_KX0CwckEJnIT_7piA&_nc_ht=scontent.fkul8-1.fna&oh=f6ed096592ceefcb151c71acf9393b63&oe=5D6BF3CC

Как я хочу сделать текст "Список пуст" находится в центре XML?

Всего 3 ответа


Ниже ваш обновленный файл макета. пожалуйста, используйте его, чтобы получить решение вашей проблемы.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/haha"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MyHistoryList">

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:clickable="false"
        android:focusable="false"
        android:gravity="center"
        android:longClickable="false"
        android:maxLines="1"
        android:textColor="#FFFFFF"
        android:textSize="18sp"
        android:textStyle="bold" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp">

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".80"
                android:gravity="start"
                android:text="Suggestion"
                android:textAllCaps="true"
                android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
                android:textColor="@color/colorAccent"
                android:textStyle="bold"
                app:fontFamily="@font/anaheim" />

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".20"
                android:gravity="start"
                android:text="Status"
                android:textAllCaps="true"
                android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
                android:textColor="@color/colorAccent"
                android:textStyle="bold"
                app:fontFamily="@font/anaheim" />
        </TableRow>
    </LinearLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recylcerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginBottom="10dp"
            android:visibility="gone" />

        <TextView
            android:id="@+id/emptyView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:gravity="center"
            android:text="List is Empty"
            android:textSize="30sp"
            android:visibility="visible" />
    </RelativeLayout>
</LinearLayout>

Теперь вам нужно обработать код, как если бы вы не получили данные в вашем recyclerView, только что перешли в окно recyclerView и сделайте видимым textView, который содержит «List Is Empty».

введите описание изображения здесь


Simple обрабатывает логическое значение, если есть информация true, если не false, если логическое true, делает переработчик видимым и скрывает текстовое представление с атрибутом видимости (нет / видим), а если оно ложно, у вас есть обратное: В случае сомнений, по вашему мнению, вы должны объявить текстовый вид и переработчик, которые вы будете видны в зависимости от случая.


Установите LinearLayout в центр тяжести

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/haha"
     android:gravity="center"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MyHistoryList">
    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:maxLines="1"
        android:clickable="false"
        android:focusable="false"
        android:longClickable="false"
        android:textStyle="bold"
        android:textSize="18sp"
        android:textColor="#FFFFFF" />

Есть идеи?

10000