Fahim
Fahim

Reputation: 404

Incorrect position views in RecycleView

I have a recyclerview and I wrote below xml code for Rows UI. the row UI shows in the design part like right to left (I mean first show asset and then asset number) but when I run program in an emulator, I see views in incorrect position (I mean first show asset number and then asset). Why? What is my problem?

RecyclerView part:

//Code
<androidx.cardview.widget.CardView
        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_weight="1"
        android:layout_height="0dp"
        android:layout_margin="15dp"
        app:elevation="2dp"
        app:cardBackgroundColor="@color/cardViewBackground"
        app:cardCornerRadius="6dp"
        app:cardElevation="2dp"
        app:cardUseCompatPadding="true"
        app:contentPadding="3dp">
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/sdp_showalldevices_activity_lstTasks"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="5dp"
            android:background="@color/gray_dark"
            android:cacheColorHint="@android:color/transparent"
            android:divider="@color/darkText"
            android:dividerHeight="5dp"
            android:layoutDirection="rtl">
        </androidx.recyclerview.widget.RecyclerView>
    </androidx.cardview.widget.CardView>
 //code...

recyclerView_row.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/cardViewBackground"
android:orientation="vertical">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:layout_marginRight="10dp"
    android:orientation="horizontal"
    android:layout_gravity="right"
    android:gravity="right">
    <TextView
        android:id="@+id/nameTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:gravity="right"
        android:layout_marginRight="5dp"
        android:text="÷رینتر"
        android:textColor="@color/gray_text"
        android:textSize="15dp"></TextView>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:gravity="right"
        android:text="@string/name"
        android:textColor="@color/gray_text"
        android:textSize="15dp"></TextView>
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:layout_marginRight="10dp"
    android:orientation="horizontal"
    android:layout_gravity="right"
    android:gravity="right">
    <TextView
        android:id="@+id/qcSerialTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:gravity="right"
        android:layout_marginRight="5dp"
        android:text="145463254654"
        android:textColor="@color/gray_text"
        android:textSize="15dp"></TextView>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:gravity="right"
        android:text="@string/QcSerial"
        android:textColor="@color/gray_text"
        android:textSize="15dp"></TextView>
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:layout_marginRight="10dp"
    android:layout_marginBottom="5dp"
    android:orientation="horizontal"
    android:layout_gravity="right"
    android:gravity="right">
    <TextView
        android:id="@+id/assetNumberTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:gravity="right"
        android:layout_marginRight="5dp"
        android:text="656dfd54"
        android:textColor="@color/gray_text"
        android:textSize="15dp"></TextView>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:gravity="right"
        android:text="@string/AssetNumber"
        android:textColor="@color/gray_text"
        android:textSize="15dp"></TextView>
</LinearLayout>

the image of the design part of recyclerView_row.xml

enter image description here

the image of run program:

enter image description here

Upvotes: 1

Views: 107

Answers (2)

MMG
MMG

Reputation: 3268

Try this code:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_marginRight="10dp"
        android:orientation="horizontal"
        android:layout_gravity="right"
        android:gravity="right">


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:gravity="right"
            android:text="name"
            android:textSize="15dp"></TextView>
        <TextView
            android:id="@+id/nameTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:gravity="right"
            android:layout_marginRight="5dp"
            android:text="نام:"
            android:textSize="15dp"></TextView>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_marginRight="10dp"
        android:orientation="horizontal"
      >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:gravity="right"
            android:text="QcSerial:"
            android:textSize="15dp"></TextView>
        <TextView
            android:id="@+id/qcSerialTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:gravity="right"
            android:layout_marginRight="5dp"
            android:text="145463254654"
            android:textSize="15dp"></TextView>


    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_marginRight="10dp"
        android:layout_marginBottom="5dp"
        android:orientation="horizontal">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:gravity="right"
            android:text="AssetNumber:"
            android:textSize="15dp"></TextView>
        <TextView
            android:id="@+id/assetNumberTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:gravity="right"
            android:layout_marginRight="5dp"
            android:text="656dfd54"
            android:textSize="15dp"></TextView>

    </LinearLayout>
</LinearLayout>

This is the preview of my answer: enter image description here

And this is output of my answer in emulator: enter image description here

Upvotes: 0

Nensi Kardani
Nensi Kardani

Reputation: 2366

if you are building an app in Arabic, Urdu, Hebrew, etc... or any language that is written from right to left you should set android:supportsRtl to true, that's how you tell the layout to be from right to left, and The default value of this attribute is false.

<application android:allowBackup="true"
        android:label="@string/app_name"
        android:supportsRtl="true"
        tools:replace="android:supportsRtl">
                 .......
    </application>

Edit

just call setReverseLayout(true) for your LayoutManager :

LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true);
layoutManager.setReverseLayout(true);

Upvotes: 1

Related Questions