如何解决LayoutInflater 忽略 XML 属性
我的 LayoutInflater 有问题。 首先这里是我的item.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@drawable/button" >
</RelativeLayout>
(我删除了这个问题的所有不必要的东西)
当我像这样在 RecyclerViewAdapter 中设置我的 LayoutInflater 时:
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item,null);
在许多关于 LayouInflater 的文档和文章中,他们推荐像这样使用 LayoutInflater:
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item,parent,false);
但是当我这样做时,它会忽略 item.xml 文件中的属性:
有很多文章解释应该避免第一种方法(对我有用的方法)。 这是其中一篇文章: https://web.archive.org/web/20190528213406/https://possiblemobile.com/2013/05/layout-inflation-as-intended/
这是我完整的 RecyclerView.Adapter 类:
public class AdapterTest extends RecyclerView.Adapter<AdapterTest.TestViewHolder> {
@Override
public TestViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item,null);
return new TestViewHolder(v);
}
@Override
public void onBindViewHolder(final TestViewHolder holder,int position) {
}
@Override
public int getItemCount() {
return 10;
}
public class TestViewHolder extends RecyclerView.ViewHolder {
public TestViewHolder(View itemView) {
super(itemView);
}
}
}
如何使用推荐的方式,但仍然有我想要的结果?
解决方法
我通过在 onCreateViewHolder 中添加这两行来修复它:
RecyclerView.LayoutParams lp = new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
v.setLayoutParams(lp);
我的 onCreateViewHolder 现在看起来像这样:
@NonNull
@Override
public TestViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
View v = LayoutInflater.from(mContext).inflate(R.layout.item,parent,false);
RecyclerView.LayoutParams lp = new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);
v.setLayoutParams(lp);
return new TestViewHolder(v);
}
这是我从那里得到的答案: https://stackoverflow.com/a/30692398/7735807
我真的无法解释为什么它现在起作用了,因为我的 RecyclerView 从一开始就设置为 MatchParent 宽度和高度。 我很高兴它现在有效
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。