1

I am using a RatingBar in my app and assigning Numbers for Stars for the ease of user but alignment of these Numbers change whenever the device is changed. Although i've used different layouts for different screens but still on some mobile it is not formatting well.

What i want

enter image description here

what's showing on some mobiles

enter image description here

Jawad Malik
  • 608
  • 5
  • 21

2 Answers2

2

Use constraint layout as a parent and fit a linear layout. That should work fine.

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    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:layout_width="match_parent"
    android:layout_height="match_parent">

    <RatingBar
        android:id="@+id/ratingBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:layout_editor_absoluteX="38dp"
        tools:layout_editor_absoluteY="192dp" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintBottom_toTopOf="@+id/ratingBar"
        app:layout_constraintEnd_toEndOf="@+id/ratingBar"
        app:layout_constraintStart_toStartOf="@+id/ratingBar">

        <TextView
            android:id="@+id/textView7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_vertical|center_horizontal"
            android:text="1"
            android:textAlignment="center" />

        <TextView
            android:id="@+id/textView15"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_vertical|center_horizontal"
            android:text="2"
            android:textAlignment="center" />

        <TextView
            android:id="@+id/textView17"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_vertical|center_horizontal"
            android:text="3"
            android:textAlignment="center" />

        <TextView
            android:id="@+id/textView18"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_vertical|center_horizontal"
            android:text="4"
            android:textAlignment="center" />

        <TextView
            android:id="@+id/textView19"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_vertical|center_horizontal"
            android:text="5"
            android:textAlignment="center" />
    </LinearLayout>
</android.support.constraint.ConstraintLayout>

enter image description here

leonardkraemer
  • 6,573
  • 1
  • 31
  • 54
0

Use below type of dynamically changin layout. I added example below. You can add your elements for relevent columns. It will change according to device

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

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

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

                    <!-- first row -->

                      <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:orientation="horizontal"
                        android:weightSum="7">

                          <LinearLayout
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
                            android:orientation="horizontal"
                            android:layout_weight="5">

                             <!-- first column (name) -->

                           </LinearLayout>

                          <LinearLayout
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
                            android:orientation="horizontal"
                            android:layout_weight="2"
                            android:weightSum="5">

                             <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="match_parent"
                                android:orientation="horizontal"
                                android:layout_weight="4">

                                 <!-- second column (name) -->

                             </LinearLayout>

                              <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="match_parent"
                                android:orientation="horizontal"
                                android:layout_weight="1"
                                android:weightSum="4">


                                  <LinearLayout
                                    android:layout_width="match_parent"
                                    android:layout_height="match_parent"
                                    android:orientation="horizontal"
                                    android:layout_weight="3">

                                     <!-- third column (name) -->

                                 </LinearLayout>

                                 <LinearLayout
                                    android:layout_width="match_parent"
                                    android:layout_height="match_parent"
                                    android:orientation="horizontal"
                                    android:layout_weight="1"
                                    android:weightSum="3">

                                       <LinearLayout
                                            android:layout_width="match_parent"
                                            android:layout_height="match_parent"
                                            android:orientation="horizontal"
                                            android:layout_weight="2">

                                             <!-- fourth column (name) -->

                                       </LinearLayout>

                                        <LinearLayout
                                            android:layout_width="match_parent"
                                            android:layout_height="match_parent"
                                            android:orientation="horizontal"
                                            android:layout_weight="1"
                                            android:weightSum="2">

                                                   <LinearLayout
                                                        android:layout_width="match_parent"
                                                        android:layout_height="match_parent"
                                                        android:orientation="horizontal"
                                                        android:layout_weight="1">

                                                         <!-- fifth column (name) -->

                                                   </LinearLayout>
                                                    <LinearLayout
                                                        android:layout_width="match_parent"
                                                        android:layout_height="match_parent"
                                                        android:orientation="horizontal"
                                                        android:layout_weight="1">

                                                         <!-- sixth column (name) -->

                                                   </LinearLayout>


                                       </LinearLayout>



                                 </LinearLayout>


                             </LinearLayout>


                           </LinearLayout>

                     </LinearLayout>


             </LinearLayout>

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

                    <!-- second row -->

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:orientation="horizontal"
                        android:weightSum="7">

                          <LinearLayout
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
                            android:orientation="horizontal"
                            android:layout_weight="5">

                             <!-- first column (name) -->

                           </LinearLayout>

                          <LinearLayout
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
                            android:orientation="horizontal"
                            android:layout_weight="2"
                            android:weightSum="5">

                             <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="match_parent"
                                android:orientation="horizontal"
                                android:layout_weight="4">

                                 <!-- second column (name) -->

                             </LinearLayout>

                              <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="match_parent"
                                android:orientation="horizontal"
                                android:layout_weight="1"
                                android:weightSum="4">


                                  <LinearLayout
                                    android:layout_width="match_parent"
                                    android:layout_height="match_parent"
                                    android:orientation="horizontal"
                                    android:layout_weight="3">

                                     <!-- third column (name) -->

                                 </LinearLayout>

                                 <LinearLayout
                                    android:layout_width="match_parent"
                                    android:layout_height="match_parent"
                                    android:orientation="horizontal"
                                    android:layout_weight="1"
                                    android:weightSum="3">

                                       <LinearLayout
                                            android:layout_width="match_parent"
                                            android:layout_height="match_parent"
                                            android:orientation="horizontal"
                                            android:layout_weight="2">

                                             <!-- fourth column (name) -->

                                       </LinearLayout>

                                        <LinearLayout
                                            android:layout_width="match_parent"
                                            android:layout_height="match_parent"
                                            android:orientation="horizontal"
                                            android:layout_weight="1"
                                            android:weightSum="2">

                                                   <LinearLayout
                                                        android:layout_width="match_parent"
                                                        android:layout_height="match_parent"
                                                        android:orientation="horizontal"
                                                        android:layout_weight="1">

                                                         <!-- fifth column (name) -->

                                                   </LinearLayout>
                                                    <LinearLayout
                                                        android:layout_width="match_parent"
                                                        android:layout_height="match_parent"
                                                        android:orientation="horizontal"
                                                        android:layout_weight="1">

                                                         <!-- sixth column (name) -->

                                                   </LinearLayout>


                                       </LinearLayout>



                                 </LinearLayout>


                             </LinearLayout>


                           </LinearLayout>

                     </LinearLayout>

             </LinearLayout>




   </LinearLayout>

</LinearLayout>
PushpikaWan
  • 2,437
  • 3
  • 14
  • 23
  • The nesting on this is horrible – leonardkraemer Nov 04 '18 at 11:55
  • @leonardkraemer this will dynamically adjust layout what u want. What do you suggest grid layout ? Grid layout cannot have much flexibility like this. But in this example his can use it as well – PushpikaWan Nov 04 '18 at 11:57
  • Your layout does not even include a rating bar. Also nested `LinearLayouts` especially with weight suns are slow and should be avoided. see https://stackoverflow.com/questions/9430764/why-are-nested-weights-bad-for-performance-alternatives – leonardkraemer Nov 04 '18 at 12:02
  • 1
    this code is very complicated bro. can't it be much simpler? – Jawad Malik Nov 04 '18 at 12:02