在实现我无法理解的RecyclerView时,我得到了一些奇怪的东西。
我使用的是默认样式的按钮,它使用了来自values / colors.xml
的colorAccent<Button
android:id="@+id/next_button"
style="@style/Widget.AppCompat.Button.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="true"
android:text="Next" />
当我在布局XML中静态使用此按钮时,我得到了预期的按钮颜色,即 -
但是当我在RecyclerView中给按钮充气时,我得到了一个意想不到的颜色,我没有在应用程序的任何地方定义 -
(我添加的按钮是RecyclerView的最后一个元素,如此处所述 - How to create RecyclerView with multiple view type?
夸大视图的代码 -
//ListAdapter constructer
public ListAdapter(Context context, List<postDetail> dataList1) {
this.context = context;
this.dataList = dataList1;
inflater = LayoutInflater.from(context);
}
public ListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View convertView;
if(viewType == 0){
convertView = inflater.inflate(R.layout.home_individual_post, parent, false);
ListViewHolder viewHolder = new ListViewHolder(convertView,0);
return viewHolder;
} else {
convertView = inflater.inflate(R.layout.prev_next,parent,false);
ListViewHolder viewHolder = new ListViewHolder(convertView,1);
return viewHolder;
}
}
//The button is in prev_next.xml
prev_next.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/next_prev_button"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="50dp"
android:gravity="center_vertical"
>
<Button
android:id="@+id/prev_button"
style="@style/MyButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="-4dp"
android:enabled="true"
android:textColor="#FFF"
android:text="Previous"
/>
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />
<Button
android:id="@+id/next_button"
style="@style/MyButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="-4dp"
android:textColor="#FFF"
android:enabled="true"
android:text="Next" />
</LinearLayout>
背景颜色问题在两个布局中 - prev_next.xml和home_individual_post.xml
我发现了问题,并在下面的答案中提到了同样的问题
答案 0 :(得分:0)
你可以尝试改变你的通胀代码,如
LayoutInflater.from(getContext()).inflate(R.layout.yourcell, parent/container, false);
答案 1 :(得分:0)
我发现了问题,不确定原因。但解决方案有效。
在创建我正在做的适配器时 -
adapter = new ListAdapter(getApplicationContext(), Posts);
然后主题问题出现了,但是当我将getApplicationContext()更改为getBaseContext()时,它起作用了 -
adapter = new ListAdapter(getBaseContext(), Posts);
问题似乎是我从异步线程创建适配器