【发布时间】:2020-12-31 21:50:24
【问题描述】:
我正在尝试在 gridview 布局管理器的 recyclerview 中显示自定义布局,但是在第二行之后,额外的空间进入了边框。 因此我的问题是如何删除多余的空间以及空间背后的原因是什么?
附加图片和代码sn-ps。
自定义项目视图布局
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/frameLayout"
android:layout_margin="2dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/img_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:src="@drawable/redcap"
android:scaleType="fitCenter"/>
<TextView
android:id="@+id/tv_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/img_content"
android:layout_centerHorizontal="true"
android:background="@color/white"
android:layout_margin="1dp"
android:layout_gravity="center|bottom|left"
android:gravity="left"
android:padding="8dp"
android:textColor="@color/primary_dark"
android:textSize="@dimen/TvTextSizeNormal"/>
</RelativeLayout>
适配器代码
public class MyAdapter extends BaseAdapter {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
final Item item = mItems.get(position);
if (convertView == null) {
Holder holder = new Holder();
view = View.inflate(mContext, R.layout.myItemView, null);
holder.img_content = view.findViewById(R.id.img_content);
holder.tv_info = (TextView) view.findViewById(R.id.tv_info);
view.setTag(holder);
} else {
view = convertView;
}
Holder holder = (Holder) view.getTag();
holder.tv_info.setText(item.getCategoryName());
Picasso.get().load(url).fit().into(holder.img_content);
return view;
}
}
MainActivity
myAdapter= new MyAdapter(MainActivity.this,subCategoryList);
recyclerGridView.setLayoutManager(new GridLayoutManager(this,2));
recyclerGridView.setAdapter(myAdapter);
【问题讨论】:
-
请问为什么要扩展 BaseAdapter 而不是 RecyclerView.Adapter?
-
定义图像的高度,这将解决问题。 IE。 android:layout_height="200dp"
-
@ChandanPednekar 嗨,是的,原始代码中很少有功能很容易在 BaseAdapter 中实现,因此采用 BaseAdapter。
-
@NehaK 。我不能给出静态高度。
-
因为这一行:android:scaleType="fitCenter"
标签: android gridview android-recyclerview android-gridview gridlayoutmanager