1

我正在使用 dev-smart 的 Horizo​​ntalListView ( from here ) 来实现图像的水平列表视图,其中包含如下的潜文本:

我想要的是.

问题是列表的每个项目视图都与屏幕的宽度一样宽。AdjustViewBounds 设置为 true 但不起作用......我明白了:

我得到了什么

我试过了:

  • 在 getView() 方法中固定图像的宽度和高度并转换视图
  • 修复 XML 中图像和 RelativeLayout 的宽度
  • 在 Horizo​​ntalListView 的方法中将宽度固定为子级

可能是 Horizo​​ntalListView 被窃听了?还有其他方法吗?以前我在水平 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>

而这,Horizo​​ntalList 项目:

        <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

4 回答 4

2

我认为这是 Horizo​​ntalListView 类的错误。

我改变

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)); 

在 Horizo​​ntalListView.java 上,它对我有用。

我希望能帮助别人。

于 2013-04-24T18:11:40.830 回答
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>

我希望这有帮助

于 2016-01-13T02:35:08.420 回答
0

我使用了相同的 Horizo​​ntalListView。我已经用 MyAdapter 类的 getView() 方法中的以下代码解决了这个问题。

convertView = getLayoutInflator().inflate(R.layout.row_item, parent, false);
于 2015-07-27T18:00:49.260 回答
-1

也许你可以试试这个,它对我有用。这里是github的链接:https ://github.com/TomIsYourName/Android-Horizo​​ntalListView

于 2013-05-29T08:18:08.187 回答