2014-11-03 3 views
0

Привет, у меня есть пользовательский адаптер ListView. Я пытаюсь установить фоновое изображение, но я не могу установить высоту каждого элемента. В каждом пункте у меня есть этот следующий XML макет:Установить фон в ListView Item

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/listMenuItem" 
    android:layout_width="fill_parent" 
    android:layout_height="80dp" 
    android:background="@drawable/nasi_goreng"> 

    <!-- Thumbnail Image --> 
    <com.android.volley.toolbox.NetworkImageView 
     android:id="@+id/thumbnail" 
     android:layout_width="80dp" 
     android:layout_height="80dp" 
     android:layout_alignParentLeft="true" 
     android:layout_marginRight="8dp" /> 

    <!-- Menu Title --> 
    <TextView 
     android:id="@+id/menuTitle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/thumbnail" 
     android:layout_toRightOf="@+id/thumbnail" 
     android:textSize="@dimen/menuTitle" 
     android:textStyle="bold" /> 

    <!-- Post Date --> 
    <TextView 
     android:id="@+id/postDate" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/menuTitle" 
     android:layout_marginTop="1dip" 
     android:layout_toRightOf="@+id/thumbnail" 
     android:textSize="@dimen/postDate" /> 

</RelativeLayout> 

Но результат таков:

enter image description here

Update: вот мой ListView XML:

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

    <ListView 
     android:id="@+id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:divider="@color/list_divider" 
     android:dividerHeight="1dp" 
     android:listSelector="@drawable/list_row_selector"> 
    </ListView> 

</RelativeLayout> 

Селектор списка xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item android:drawable="@drawable/list_row_bg" android:state_pressed="false" android:state_selected="false"></item> 
    <item android:drawable="@drawable/list_row_bg_hover" android:state_pressed="true"></item> 
    <item android:drawable="@drawable/list_row_bg_hover" android:state_pressed="false" android:state_selected="false" ></item> 

</selector> 

Как исправить высоту ??

Спасибо

+0

вы можете положить ListView ДП xml-файл? –

+0

Пожалуйста, проверьте мой вопрос. Я обновлен. – fanjavaid

+0

Можете ли вы поместить listselector xml? –

ответ

0

Попробуйте установить RelativeLayoutандроида: layout_height = "wrap_content" вместо андроида: layout_height = "80dp", если его не работал для вас

Пожалуйста, оставьте свои освобожденный

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

+0

Я уже пытаюсь установить 'wrap_content', но все тот же результат. – fanjavaid

+0

Пожалуйста, проверьте мой вопрос. – fanjavaid

0

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

+0

Могу ли я добавить еще один текст выше 'imageView'? – fanjavaid

+0

Это означает, что мы не должны добавлять фон в родительский макет? – SilentKiller

+0

@fanjavaid Вы можете сделать это в RelativeLayout или FrameLayout. Он делает ImageView точно так же, как фон TextView. – Yaco

0

андроид: layout_width & андроида: layout_height должен быть указан в дп в данном случае, в противном случае это займет столько места, сколько нужно фоновое изображение ...

+0

его уже указано в «dp» – SilentKiller

+0

Кажется, listview не соблюдает эту спецификацию. Требуется столько места, сколько требуется .... вы можете попробовать указать dp для каждого элемента вместо самой компоновки, если это имеет значение ... – Jahid

1

дизайн фоновое изображение в соответствии с вашими потребностями. Определите размер (ширина & height) элемента списка и создайте изображение этого размера, а затем используйте его как фоновое изображение. Если вы хотите использовать это приложение на вкладке, тогда также создайте изображение в нескольких размерах (в соответствии с масштабированием изображения для Android)

Прочтите эту ссылку (http://developer.android.com/guide/practices/screens_support.html) для более подробной информации.

Ниже приведены необходимые рекомендации по ресурсу изображения.

Примечание: для другой плотности экрана андроид предпочитает hdpi, xhdpi, xxhdpi, xxxhdpi.

Таким образом, мы можем рассматривать коэффициент масштабирования как 2: 3: 4: 6: 8 для каждого значка и изображения.

  • MDPI: 2x (базовый уровень)
  • ИПЧР: 3x
  • xhdi: 4x
  • xxhdi: 6x
  • xxxhdpi: 8х
+0

Но как насчет ширины? Потому что в каждом устройстве разная ширина. – fanjavaid

+0

Я обновил свой ответ, посмотри и попробуй. Пожалуйста, примите ответ, если он вам поможет .. :) –

0

вот пример из androidhive, который работает ожидается:

<?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="20dp" 
    android:background="@color/feed_bg" 
    android:descendantFocusability="blocksDescendants" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_marginLeft="@dimen/feed_item_margin" 
     android:layout_marginRight="@dimen/feed_item_margin" 
     android:layout_marginTop="@dimen/feed_item_margin" 
     android:background="@drawable/bg_parent_rounded_corner" 
     android:orientation="vertical" 
     android:paddingBottom="@dimen/feed_item_padding_top_bottom" 
     android:paddingTop="@dimen/feed_item_padding_top_bottom" > 

     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      android:paddingLeft="@dimen/feed_item_padding_left_right" 
      android:paddingRight="@dimen/feed_item_padding_left_right" > 

      <com.android.volley.toolbox.NetworkImageView 
       android:id="@+id/profilePic" 
       android:layout_width="@dimen/feed_item_profile_pic" 
       android:layout_height="@dimen/feed_item_profile_pic" 
       android:scaleType="fitCenter" > 
      </com.android.volley.toolbox.NetworkImageView> 

      <LinearLayout 
       android:layout_width="160dp" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" 
       android:paddingLeft="@dimen/feed_item_profile_info_padd" > 

       <TextView 
        android:id="@+id/name" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:textSize="@dimen/feed_item_profile_name" 
        android:textStyle="bold" /> 

       <TextView 
        android:id="@+id/timestamp" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:textColor="@color/timestamp" 
        android:textSize="@dimen/feed_item_timestamp" /> 
      </LinearLayout> 

      <Button 
       android:id="@+id/button1" 
       android:layout_width="50dp" 
       android:layout_height="50dp" 
       android:focusable="false" 
       android:background="@drawable/sharebutton" /> 

     </LinearLayout> 

     <TextView 
      android:id="@+id/txtStatusMsg" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:paddingBottom="5dp" 
      android:paddingLeft="@dimen/feed_item_status_pad_left_right" 
      android:paddingRight="@dimen/feed_item_status_pad_left_right" 
      android:paddingTop="@dimen/feed_item_status_pad_top" /> 

     <TextView 
      android:id="@+id/txtUrl" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:linksClickable="true" 
      android:paddingBottom="10dp" 
      android:paddingLeft="@dimen/feed_item_status_pad_left_right" 
      android:paddingRight="@dimen/feed_item_status_pad_left_right" 
      android:textColorLink="@color/link" /> 

     <info.androidhive.listviewfeed.FeedImageView 
      android:id="@+id/feedImage1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@color/white" 
      android:scaleType="fitXY" 
      android:visibility="visible" /> 
    </LinearLayout> 

</LinearLayout> 

см. Раздел profilepic. это размер т.е. высота и ширина и фиксируются, и это работает ...

так как о выделении ImageView с разной компоновкой с fill_parent и wrap_content Params в то время как ImageView PARAMS прикреплены к