2017-02-01 7 views
0

Я пытаюсь создать представление из пользовательского списка.Ограничение макета Android TextSize в listView

См рисунок ниже

layout

Цвета: - синий макет вид - розовый является строкой из списка - красного цвета изображения, размер фиксированных расположен слева - серый - это место для отображения двух текстов: ярлык и значение - оранжевое изображение другое, размер фиксированный, который должен быть расположен справа

Я много читал о макетах, но не могу найти aw чтобы сделать это.

Что бы я ни пытался, если текст слишком длинный, он попадает под оранжевое изображение.

Вот XML я использую:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="horizontal"> 
<ImageView 
    android:id="@+id/flower_picture" 
    android:layout_width="80dp" 
    android:layout_height="80dp" 
    android:background="@color/white" 
    android:padding="1dp" 
    android:scaleType="fitXY" /> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="start" 
    android:orientation="horizontal"> 
    <TextView 
     android:id="@+id/label" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="LABEL" /> 
    <TextView 
     android:id="@+id/name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="10dp" 
     android:ellipsize="end" 
     android:maxLines="1" /> 
</LinearLayout> 
<ImageView 
    android:id="@+id/wateredbutton" 
    android:layout_width="40dp" 
    android:layout_height="40dp" 
    android:background="@color/white" 
    android:scaleType="fitXY" /> 
</LinearLayout> 

Я пробовал много вещей, но не может найти способ, чтобы ограничить размер текста без установки TextSize в виде layout_width.

Я предположил, что андроид сможет обнаружить, что есть 3 макета для отображения в строке и будет иметь возможность ограничить среднюю до нужного размера, если это необходимо.

Есть ли способ сделать это?

+0

Вы дали maxLength? –

+0

просто приведите вес к каждому виду, посмотрите на это

+0

также избегайте использования fill_parent , эта константа устарела, начиная с уровня API 8 и заменяется match_parent – shadygoneinsane

ответ

0

Try ниже код, который не накладываются друг на друга и ограничить текст в TextView

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 


    <ImageView 
     android:id="@+id/flower_picture" 
     android:layout_width="80dp" 
     android:layout_height="80dp" 
     android:layout_alignParentLeft="true" 
     android:background="@color/white" 
     android:padding="1dp" 
     android:scaleType="fitXY" /> 


    <ImageView 
     android:id="@+id/wateredbutton" 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:layout_alignParentRight="true" 
     android:background="@color/white" 
     android:scaleType="fitXY" /> 


    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_toLeftOf="@+id/wateredbutton" 
     android:layout_toRightOf="@+id/flower_picture" 
     android:orientation="horizontal" 
     android:weightSum="10"> 

     <TextView 
      android:id="@+id/label" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="5" 
      android:ellipsize="end" 
      android:maxLines="1" /> 

     <TextView 
      android:id="@+id/name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="5" 
      android:ellipsize="end" 
      android:maxLines="1" /> 

    </LinearLayout> 
</RelativeLayout> 
+0

Perfiect, он сделал трюк, с эллипсисом, все еще работающим, и без длины или веса, чтобы изображения не масштабировались. Большое спасибо ! – Pierre

0
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

    <ImageView 
     android:id="@+id/flower_picture" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:background="@color/white" 
     android:padding="1dp" 
     android:scaleType="fitXY" /> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:layout_weight="3" 
     android:orientation="horizontal"> 

     <TextView 
      android:id="@+id/label" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:inputType="text" 
      android:lines="1" 
      android:maxLines="1" 
      android:text="LABEL" /> 

     <TextView 
      android:id="@+id/name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="10dp" 
      android:ellipsize="end" 
      android:inputType="text" 
      android:lines="1" 
      android:maxLines="1" /> 
    </LinearLayout> 

    <ImageView 
     android:id="@+id/wateredbutton" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:background="@color/white" 
     android:scaleType="fitXY" /> 
</LinearLayout> 

Используйте это решит вашу проблему,

0

если вы хотите ограничить вид текста в строке. использовать относительное расположение и добавить toRightOff и дать удостоверение личности с фотографией правого изображения и ограничит его слева от изображения и обыкновение вырезать за картину

Смежные вопросы