我正在开发一个基于Twitter的应用程序,并在回收者视图中将推文显示为项目。我在项目布局中有一个imageview,仅当推文也有与之关联的图像时才显示。我这样做是通过在xml中将imageview可见性设置为GONE并且如果存在图像URL,我将onviewView中的imageview可见性设置为VISIBLE。
我希望imageview高度是动态的,所以我设置它的高度来包装内容。但是当显示列表时,看起来图像突然出现并且在滚动时出现一些问题,例如当滚动速度快时,图像视图显示一些其他图像,在一段时间之后替换正确的图像并且此更改非常引人注目。所以,现在我在我的imageview上使用固定高度缩小图像,简而言之,不填充图像视图。问题是,如果图像高度小于xml中指定的高度,则会出现图像视图上方和下方的大量空白。我希望列表项中出现的图像尽可能大,而不会出现任何问题。我怎么能这样做。
另外,我正在使用滑行来加载我的图像。
这里要求的是我的代码:
item_layout
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="5dp">
<TextView
android:id="@+id/text_tweet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:linksClickable="true"
android:autoLink="web"
android:textColorLink="@color/primary"/>
<ImageView
android:id="@+id/image_tweet"
android:layout_width="match_parent"
android:layout_height="300dp"
android:visibility="gone"
tools:ignore="contentDescription" />
</LinearLayout>
MyAdapter
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
Tweet tweet = tweets.get(position);
holder.tweetTextView.setText(tweet.descripion);
if (!TextUtils.isEmpty(tweet.tweetImage)) {
holder.tweetImageView.setVisibility(View.VISIBLE);
Glide.with(mContext)
.load(tweet.imagUrl)
.crossFade()
.centerCrop()
.into(holder.tweetImageView);
}
}
答案 0 :(得分:0)
CenterCrop()将删除上方和下方的空格。如果没有固定的imageView高度,convertView将返回其先前的布局高度,这可能与所需的新大小不同,因此会导致&#34;跳跃效果&#34; (如果使用wrap_content,则在加载图像后滚动时(布局更改)