Выравнивание 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);
Я предлагаю одно из следующего:
- Всегда ставьте тип сотрудника на второй строке, чтобы избежать подобных проблем.
- Найдите какой-нибудь другой способ указать сотрудника, который не включает в себя написание типа. Например, возможно, используйте какой-нибудь символ, который не занимает так много места. Таким образом, даже если имя становится очень длинным, вы все равно можете оставить место для маленького символа.
Попробуй это:
<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>