我正在使用dev-smart(from here)的HorizontalListView来实现具有以下子文字的图像的水平列表视图:
问题是列表的每个项目视图都与屏幕的宽度一样宽。 AdjustViewBounds设置为true但不起作用......我明白了:
我试过了:
可能是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 :(得分: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上,它适用于我。
我希望帮助别人。
答案 1 :(得分: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>
我希望这会有所帮助
答案 2 :(得分:0)
我使用了相同的HorizontalListView。我已经使用MyAdapter类的getView()方法中的以下代码解决了这个问题。
convertView = getLayoutInflator().inflate(R.layout.row_item, parent, false);
答案 3 :(得分:-1)
也许你可以尝试这个,它适合我。 这是github的链接:https://github.com/TomIsYourName/Android-HorizontalListView