2013-04-21 4 views
1

Я использую HorizontalListView от Dev-смарт (from here) осуществлять горизонтальный вид списка изображений с подтекстом вроде этого:HorizontalListView - Пользовательский вид Image-Text

What I want.

Проблема в том, что каждый элемент списка имеет такую ​​же ширину, как ширина экрана. AdjustViewBounds установлен верно, но не работает ... Я получаю это:

What I get

Я пробовал: ширина

  • Fix и высота изображения и convertView в методе GetView()
  • ширина
  • Фикса к изображению и RelativeLayout в XML
  • ширина
  • Фикса к ребенку в методе давала HorizontalListView в

Может быть, HorizontalListView прослушивается? Есть ли другой способ сделать это? Раньше я использовал горизонтальный ListView внутри горизонтального ListView, но это имеет проблему. Он загружает все фотографии, даже если они никогда не распиливаются.

Может кто-нибудь мне помочь? Спасибо!!

Это GetView метод моего пользовательского адаптера():

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 
    if (convertView == null) { 
     holder = new ViewHolder(); 
     convertView = inflater.inflate(R.layout.item_actor, null); 

     holder.img = (ImageView) convertView.findViewById(R.id.actor_img); 
     holder.tittle = (TextView) convertView.findViewById(R.id.actor_txt); 
     convertView.setTag(holder); 
    } 

    else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    holder.img.setImageResource(R.drawable.actor_thumb); 
    holder.tittle.setText(getItem(position).getName()); 
    convertView.setLayoutParams(new LayoutParams(150,190)); 
    ImageDownloader.getInstance(mContext).download(getItem(position).getPhotoUrl(), holder.img, 
      R.drawable.actor_thumb); 
    return convertView; 

} 

Это мнение пункт накачиваются:

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

<ImageView 
    android:id="@+id/actor_img" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:adjustViewBounds="true" 
    android:scaleType="centerCrop" 
    android:src="@drawable/ic_launcher" /> 

<net.asturdroid.datamovie.widgets.TextViewRoboto 
    android:id="@+id/actor_txt" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:background="@color/text_over_image_background" 
    android:gravity="center" 
    android:maxLines="3" 
    android:textColor="@color/text_over_image" /> 

</RelativeLayout> 

И это, пункт HorizontalList:

 <com.devsmart.android.ui.HorizontalListView 
      android:id="@+id/casting_view_list" 
      android:layout_width="wrap_content" 
      android:layout_height="190dp" /* wrap_content doesn't works. */> 
     </com.devsmart.android.ui.HorizontalListView> 
+0

Это не совсем ясно для меня ваша вторая пуля означает, что вы пытались добавить ограничения выравнивания в пользовательский 'TextView'? То естьпопробуйте 'android: layout_alignLeft =" @ + id/actor_img "и' android: layout_alignRight = "@ + id/actor_img", чтобы привязать вертикальные кромки пользовательского вида в соответствии с настройками 'ImageView'. –

+0

Извините, но это не сработает ... Проблема заключается в изображении, оно больше размера экрана, но на картинке, которую я опубликовал, есть прозрачные пространства в обеих сторонах из-за scaleType. Я не знаю, но adjustViewBounds игнорируется –

ответ

2

Я думаю, что это ошибка в классе HorizontalListView.

меняю

child.measure(MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.AT_MOST), 
    MeasureSpec.makeMeasureSpec(getHeight(), MeasureSpec.AT_MOST)); 

в

child.measure(MeasureSpec.makeMeasureSpec(params.width, MeasureSpec.AT_MOST), 
    MeasureSpec.makeMeasureSpec(params.height, MeasureSpec.AT_MOST)); 

на HorizontalListView.java и это работает для меня.

Я надеюсь, что это поможет кому-то еще.

0

Я использовал тот же HorizontalListView. Я решил проблему с приведенным ниже кодом в методе getView() класса MyAdapter.

convertView = getLayoutInflator().inflate(R.layout.row_item, parent, false); 
1

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

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

    <ImageView 
     android:id="@+id/actor_img" 
     android:layout_width="150dp" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:adjustViewBounds="true" 
     android:scaleType="centerCrop" 
     android:src="@drawable/ic_launcher" /> 

    <net.asturdroid.datamovie.widgets.TextViewRoboto 
     android:id="@+id/actor_txt" 
     android:layout_width="150dp" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:background="@color/text_over_image_background" 
     android:gravity="center" 
     android:maxLines="3" 
     android:textColor="@color/text_over_image" /> 

    </RelativeLayout> 

Я надеюсь, что это помогает

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