最近在做新App开发时,使用RecycleView控件Gridlayout分三列展示信息,却遇到了只显示一行数据的Bug,
代码如下:
mBinding.recyclerViewLabel.setLayoutManager(new GridLayoutManager(getActivity,3));
列表子项item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_lovetalk_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/back_label_cornor"
android:layout_gravity="center_horizontal"
android:text="@string/lovetalk"
android:textSize="@dimen/font_12"
android:layout_marginLeft="@dimen/spacing_30"
android:layout_marginTop="@dimen/spacing"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:paddingStart="@dimen/spacing"
android:paddingEnd="@dimen/spacing"
</LinearLayout>
recycleView.xml
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView_label"
android:layout_width="match_parent"
android:layout_height="140dp"
android:layout_below="@id/tv_hot_label"
android:layout_marginTop="23dp"
android:overScrollMode="never"
tools:listitem="@layout/lovetalk_label_item_layout" />
Bug展示:
既然是单行显示,是不是子项把父控件的高度占满了,于是去检查item.xml文件,看到textView高度是wrap_content,就很纳闷儿,既然不是match_parent为啥只能显示一行,发现,还是自己疏忽大意,既然是列表子项,那么他整个最外层的布局文件的高度都不能match_parent,于是发现在最外层的LinerLayout的 android:layout_height="match_parent",大意了啊,执着于TextView控件,却疏忽了其父容器的宽高。
解决方法就出来啦!
一、检查列表子项布局文件的属性,是不是写错了
二、若布局文件找不出来是哪儿的问题,则可以从把item装入RecycleView这个过程中入手!
更改位置:列表的adapter文件。
原理:直接在装入item的时候无视父容器的逻辑,重写onCreateViewHolder()方法
@Override
public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
//重点在inflate里的参数,本来第二个参数是parent,这儿改为null,则父容器的属性对他本身就无效
View convertView = layoutInflater.inflate(R.layout.lovetalk_label_item_layout, null, false);
return new BaseViewHolder(convertView);
}
第二个方法百度找到的,试了下也可以哦!
在用户使用 应用的时候,经常会出现点击过快且多次点击同一控件的情况,
一方面这是因为应用或手机当前有些卡顿,网络卡啥的
另一方面也可能是由于很多应用并没有设置按钮点击时的 selector 或者其它按钮响应方式(例如点击按钮时按钮放大,常见于游戏),导致用户误认为没有点击到当前按钮。(比如使用selector再点击后更换背景颜色,图片等等)
android 7.0 popwindow显示位置异常,在android7.1官方进行解决了,但是还是要多7.0的bug进行解决,我的解决方案里面通过重写popwindow进行适配:
import android.