在RecyclerView中膨胀时,按钮的样式(一般主题)发生了变化

时间:2016-05-21 20:17:07

标签: android xml android-layout layout android-recyclerview

在实现我无法理解的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中静态使用此按钮时,我得到了预期的按钮颜色,即 -

enter image description here

但是当我在RecyclerView中给按钮充气时,我得到了一个意想不到的颜色,我没有在应用程序的任何地方定义 -

enter image description here

(我添加的按钮是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

我发现了问题,并在下面的答案中提到了同样的问题

2 个答案:

答案 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);

问题似乎是我从异步线程创建适配器