2013-09-24 12 views
0

У меня есть список, состоящий из трех столбцов. Первый - это ImageView, второй и третий - текстовые (см. Код).Проблемы с отображением ListView

Я хочу, чтобы этот список, чтобы быть выровнен так:

  1. значка и дата должна всегда показывать его !!
  2. текст в середине должен показать, как много символов, насколько это возможно
  3. дата всегда должна быть справа от правой стороны

С XML ниже он выглядит нормально на моем Nexus 4. Но планшет Asus, дата должна быть больше справа, а coloumn в середине должен показывать больше текста (screenshot 1). На AVD (screenshot 2) coloumn в середине должен быть меньше и дата должна быть показана полностью.

Может ли кто-нибудь сказать мне, как изменить XML? Благодаря!

<?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="fill_parent" 
android:padding="5dp" > 

<ImageView 
    android:id="@+id/logo" 
    android:layout_width="50px" 
    android:layout_height="50px" 
    android:layout_marginLeft="5px" 
    android:layout_marginRight="20px" 
    android:layout_marginTop="5px" 
    android:src="@drawable/social_chat" 
    android:layout_weight="0" 
    > 
</ImageView> 

<TextView 
    android:id="@+id/label" 
    android:layout_width="0px" 
    android:layout_height="fill_parent" 
    android:layout_marginTop="0px" 
    android:text="@+id/label" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:layout_weight="50" 
    android:maxLines="1" 
    android:singleLine="true" 
    > 
</TextView> 

<TextView 
    android:id="@+id/last_changed" 
    android:layout_width="0px" 
    android:layout_height="fill_parent" 
    android:layout_marginTop="15px" 
    android:layout_marginLeft="5px" 
    android:text="@+id/last_changed" 
    android:textAppearance="?android:attr/textAppearanceSmall" 
    android:layout_weight="50" 
    android:maxLines="1" 
    android:singleLine="true" 
    > 
</TextView> 

+0

heres скриншот моей связи 4. выглядит хорошо. http://abload.de/img/nexus40vkzt.png – NoobieNoob

+0

первое, не использовать «px» .. использовать «dp» – Rasmus

ответ

0

Off верхней части моей головы макет будет выглядеть примерно this.-

<?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" 
    android:padding="5dp" > 

    <ImageView 
     android:id="@+id/logo" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:layout_marginLeft="5dp" 
     android:layout_marginRight="20dp" 
     android:layout_marginTop="5dp" 
     android:src="@drawable/social_chat" /> 

    <TextView 
     android:id="@+id/label" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@+id/label" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:layout_weight="1" 
     android:singleLine="true" /> 

    <TextView 
     android:id="@+id/last_changed" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="15dp" 
     android:layout_marginLeft="5dp" 
     android:text="@+id/last_changed" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:singleLine="true" /> 

</LinearLayout> 

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


Некоторые полезные tips.-

  • fill_parent устарела, используйте match_parent вместо
  • Когда вид не имеет детей, вы можете просто закрыть его с />
  • singleLine="true" достаточно иметь a SingleLined TextView
  • Обычно вы хотите использовать dp единиц inste объявление от px
+0

работает также. спасибо .... – NoobieNoob

+0

Рад, что это помогло :) Кстати, не забудьте подумать о том, чтобы ответить/принять ответ/ответ, который помог вам лучше, поскольку это может быть полезно для других пользователей. – ssantos

0

Это должно сделать вашу работу. Я поставил изображение на родителей слева, дату на родителей справа и ярлык справа от изображения и слева от даты. Он должен работать нормально для вас. Поля, прокладка, пожалуйста, поставьте себя

<?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" > 



<ImageView 
    android:id="@+id/logo" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:src="@drawable/social_chat" /> 

    <TextView 
    android:id="@+id/last_changed" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:singleLine="true" /> 

<TextView 
    android:id="@+id/label" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:layout_toLeftOf="@id/last_changed" 
    android:layout_toRightOf="@id/logo" 
    android:singleLine="true" /> 
</RelativeLayout> 
+0

работает очень хорошо. thx – NoobieNoob

+0

Тогда, пожалуйста, примите ответ .. (вам нужно щелкнуть галочкой по моему ответу, чтобы принять его) – Rasmus

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