HorizontalListView - пользовательский вид изображения-текста
Я использую HorizontalListView от dev-smart ( отсюда) для реализации горизонтального представления списка изображений с подтекстом:
,
Проблема в том, что каждый элемент списка имеет ширину экрана. AdjustViewBounds установлен в true, но не работает... Я получаю это:
Я старался:
- Зафиксируйте ширину и высоту изображения и 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>
4 ответа
Я думаю, что это ошибка в классе 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, и это работает для меня.
Я надеюсь, что помогает кому-то еще.
У меня возникла та же проблема: я изменил ширину каждого элемента в представлении элемента, чтобы он был раздут:
<?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>
надеюсь, это поможет
Я использовал тот же HorizontalListView. Я решил проблему с помощью приведенного ниже кода в методе getView() класса MyAdapter.
convertView = getLayoutInflator().inflate(R.layout.row_item, parent, false);
Может быть, вы можете попробовать это, это работает для меня. Вот ссылка на github: https://github.com/TomIsYourName/Android-HorizontalListView HorizontalListView