Выравнивание TextViews в одной строке

У меня два TextViews выровнены в том же ряду. Если текст в обоих TextViews маленькие, они вписываются в один ряд на экране. Но если текст слева TextView (employee name) увеличивается, текст справа TextView (employee type) сдвигается на вторую строку, но на правую сторону экрана. Как мне сделать второй TextView выровнен влево и во второй строке (ниже employee name) если employee name слева TextView увеличивается и оба TextViews не вписываются в один ряд?

Пожалуйста, проверьте скриншот ниже: текущее поведение

Пожалуйста, найдите мой код ниже:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:background="#fff"
  android:orientation="horizontal"
  android:padding="10dp" >

<TextView
    android:id="@+id/employee_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="22.0sp" />

<TextView android:id="@+id/employee_type"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingLeft="8dp"
    android:layout_toRightOf="@id/employee_name"
    android:layout_alignBaseline="@id/employee_name"
    android:textSize="15.0sp" />

 </RelativeLayout>

3 ответа

Решение

Ответ заключается в использовании одного TextViewи измените характеристики с помощью пролетов.

Предполагая, что у вас был только TextView с @+id/employee_name:

TextView employeeInfo = (TextView) findViewById(R.id.employee_name);

String employeeName = // get your employee name
String employeeType = // get your employee type

// Assuming you move your 15sp into a dimens.xml resource file
int employeeTypeSize = getResources().getDimensionPixelSize(R.dimen.employee_type_text_size);

SpannableStringBuilder builder = new SpannableStringBuilder(employeeName);
builder.append(employeeType);

// Set the smaller text size from the end of the name to the end
// of the string.
builder.setSpan(new AbsoluteSizeSpan(employeeTypeSize), 
                employeeName.length(), builder.length(), 
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

// Then set this spannable to the TextView
employeeInfo.setText(builder);

Я предлагаю одно из следующего:

  1. Всегда ставьте тип сотрудника на второй строке, чтобы избежать подобных проблем.
  2. Найдите какой-нибудь другой способ указать сотрудника, который не включает в себя написание типа. Например, возможно, используйте какой-нибудь символ, который не занимает так много места. Таким образом, даже если имя становится очень длинным, вы все равно можете оставить место для маленького символа.

Попробуй это:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:background="#fff"
  android:weightSum="2"
  android:orientation="horizontal"
  android:orientation="horizontal"
  android:padding="10dp" >

<TextView
    android:id="@+id/employee_name"
    android:layout_width="match_parent"
    android:weightSum="2"
    android:weight="1"
    android:layout_height="wrap_content"

    android:textSize="22.0sp" />

<TextView android:id="@+id/employee_type"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weight="1"
    android:paddingLeft="8dp"
    android:textSize="15.0sp" />

 </LinearLayout>
Другие вопросы по тегам