Линейный макет сокращает текст в текстовом представлении

У меня есть строка состояния с 6 элементами подряд в линейном макете. Это выглядит нормально на новом дисплее с высоким разрешением. Но когда я запускаю приложение на моем старом смартфоне, в строке состояния отображается только первый текст Textview. ImageViews отключены, и строка состояния становится выше без дополнительного контента.

Я хочу, чтобы, если содержимое не помещалось, текст в первом textView укорачивался, так что все ImageViews могли быть показаны. Это возможно?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="2dp"
    android:gravity="right|center_vertical"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/statusbar_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="5dp"
        android:text="Text der Statusbar" />

    <TextView
        android:id="@+id/statusbar_text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="5dp"
        android:text="TEXT1" />

    <ImageView
        android:id="@+id/some_state0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/stat_some_state0" />

    <ImageView
        android:id="@+id/some_state1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="5dp" 
        android:src="@drawable/stat_some_state1" />

    <ImageView
        android:id="@+id/some_state2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="5dp" 
        android:src="@drawable/stat_some_state2" />

    <ImageView
        android:id="@+id/some_state3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="5dp" 
        android:src="@drawable/stat_some_state3" />

</LinearLayout>

2 ответа

Решение

Добавьте вес для всех элементов. Если веса равны, макет будет разделен поровну. если вес вдвое больше остальных, тогда деление будет вдвое больше. если orientation является vertical и вы дали вес, тогда рост должен быть 0dp и если это horizontal ширина должна быть 0dp

?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="2dp"
    android:gravity="right|center_vertical"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/statusbar_text"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:paddingLeft="5dp"
        android:layout_weight="1"
        android:text="Text der Statusbar" />

    <TextView
        android:id="@+id/statusbar_text1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:paddingLeft="5dp"
        android:text="TEXT1" />

    <ImageView
        android:id="@+id/some_state0"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/stat_some_state0" />

    <ImageView
        android:id="@+id/some_state1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:paddingLeft="5dp" 
        android:src="@drawable/stat_some_state1" />

    <ImageView
        android:id="@+id/some_state2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:paddingLeft="5dp" 
        android:src="@drawable/stat_some_state2" />

    <ImageView
        android:id="@+id/some_state3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:paddingLeft="5dp" 
        android:src="@drawable/stat_some_state3" />

</LinearLayout>

Ты должен сделать свой layout как это. добавление weight чтобы взгляды исправили их widths, Так что независимо от text length это не помешает вашему imageViews,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="2dp"
android:gravity="right|center_vertical"
android:orientation="horizontal">

<TextView
    android:id="@+id/statusbar_text"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="2"
    android:paddingLeft="5dp"
    android:text="Text der Statusbar" />

<TextView
    android:id="@+id/statusbar_text1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:paddingLeft="5dp"
    android:text="TEXT1" />

<ImageView
    android:id="@+id/some_state0"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="0.5"
    android:src="@drawable/stat_some_state0" />

<ImageView
    android:id="@+id/some_state1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="0.5"
    android:paddingLeft="5dp"
    android:src="@drawable/stat_some_state1" />

<ImageView
    android:id="@+id/some_state2"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="0.5"
    android:paddingLeft="5dp"
    android:src="@drawable/stat_some_state2" />

<ImageView
    android:id="@+id/some_state3"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="0.5"
    android:paddingLeft="5dp"
    android:src="@drawable/stat_some_state3" />

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