Не удается отцентрировать TextView с помощью RelativeLayout - PullRequest
2 голосов
/ 22 мая 2019

У меня проблема с моим TextView, я просто не могу отцентрировать его.Вот как это должно выглядеть: enter image description here

И на самом деле это выглядит так
enter image description here

Вот мой код XML

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

    <TextView
        android:id="@+id/magnitudeTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_margin="10dp"
        android:textSize="15sp" />

    <TextView
        android:id="@+id/cityNameTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_margin="10dp"
        android:textSize="15sp" />

    <TextView
        android:id="@+id/dateTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_margin="10dp"
        android:textSize="15sp" />

</RelativeLayout>

Ответы [ 6 ]

1 голос
/ 22 мая 2019

Вместо RelativeLayout вы можете использовать LinearLayout, в котором вы можете установить weightsum на 3, что даст вам более надежное решение. Каждый TextView получит равное количество места в строке.

1 голос
/ 22 мая 2019

Использование LinearLayout с горизонтальной ориентацией вместе с weightsum из 3 для просмотра текста детьми даст вам легкое и более надежное решение, сделав его следующим образом:

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

                    <TextView
                        android:id="@+id/magnitudeTV"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_margin="10dp"
                        android:layout_weight="1"
                        android:text="test"
                        android:textSize="15sp" />

                    <TextView
                        android:id="@+id/cityNameTV"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="test"
                        android:gravity="center"
                        android:layout_weight="1"
                        android:layout_margin="10dp"
                        android:textSize="15sp" />

                    <TextView
                        android:id="@+id/dateTV"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:layout_margin="10dp"
                        android:textSize="15sp" />

                </LinearLayout>

Сейчаскаждый из ваших текстовых видов займет ровно 1/3 всей ширины экрана, если вы хотите, чтобы центральный экран был больше, вы можете играть со значением layout_weight в каждом текстовом представлении, чтобы соответствовать вашему желаемому дизайну.

1 голос
/ 22 мая 2019

Техника «Ниже» работает для меня. То есть: используйте ваш первый TextView как left ориентированный и средний TextView как center ориентированный и последний TextView как right ориентированный и примените weight длякаждый TextView.

Ваш код будет выглядеть так:

      <?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="match_parent"
        orientation=vertical
        weightsum=3
>

        <TextView
            android:id="@+id/magnitudeTV"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_margin="10dp"
            android:textSize="15sp"
            android:layout_weight=1 />

        <TextView
            android:id="@+id/cityNameTV"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:textSize="15sp" 
            android:layout_weight=1/>

        <TextView
            android:id="@+id/dateTV"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_margin="10dp"
            android:textSize="15sp" 
            android:layout_weight=1/>
    </LinearLayout>

`

0 голосов
/ 22 мая 2019

Вы можете достичь этого, выполнив:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true">

    <TextView
        android:id="@+id/magnitudeTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:text="sdf34 "
        android:textColor="#000000"
        android:textSize="15sp" />

    <TextView
        android:id="@+id/cityNameTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/magnitudeTV"
        android:layout_margin="10dp"
        android:text="dasdasdsadasdds"
        android:textColor="#000000"
        android:textSize="15sp" />

    <TextView
        android:layout_toRightOf="@id/cityNameTV"
        android:id="@+id/dateTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:text="fg25111dfg"
        android:textColor="#000000"
        android:textSize="15sp" />

</RelativeLayout>




but according to me it is not a good solution for this you can con-catenate all the three strings and than set the final string to one single text view as mentioned below:


  String final_string = distance +" "+string_2  +" "+string_3;
    textView.setText(final_string);
0 голосов
/ 22 мая 2019

Как правило, линейная схема с весами будет соответствовать этим потребностям, система автоматически разделит экран на части в зависимости от веса, который вы упомянули

  <LinearLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:weightSum = "5"
     android:orientation = "horizontal"
     />

    <TextView
      android:id="@+id/magnitudeTV"
      android:layout_width="0dp"
      android:layout_weight = "1"
      android:layout_height="wrap_content"
      android:layout_alignParentStart="true"
      android:layout_alignParentLeft="true"
      android:layout_margin="10dp"
      android:textSize="15sp" />

    <TextView
      android:id="@+id/cityNameTV"
      android:layout_width="0dp"
      android:layout_weight = "3"
      android:layout_height="wrap_content"
      android:layout_centerHorizontal="true"
      android:layout_margin="10dp"
      android:textSize="15sp" />

    <TextView
      android:id="@+id/dateTV"
      android:layout_width="0dp"
      android:layout_weight = "1"
      android:layout_height="wrap_content"
      android:layout_alignParentEnd="true"
      android:layout_alignParentRight="true"
      android:layout_margin="10dp"
      android:textSize="15sp" />

</LinearLayout>
0 голосов
/ 22 мая 2019

Горизонтальный LinearLayout обеспечит лучшее и более легкое решение вашей проблемы. Что бы вы сделали, это оберните в него ваши три текстовых просмотра, затем используйте layout_width=wrap_content для тех, что слева и справа, и layout_width=0dp layout_weight=1

для среднего

...