我在回收者的视图项目中使用了涟漪效果,但效果不会扩展 到视图的整个宽度。例如,如果textview只包含几个符号,则涟漪效果适用于此符号宽度,但不适用于所有项目宽度(项目宽度= match_parent)
这是我的代码:
MyFragment
<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:padding="2dp" />
RecyclerView_item
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/item_background">
<TextView
android:id="@+id/item_question"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center_vertical"
android:textSize="15sp"
android:textStyle="bold" />
</FrameLayout>
item_background.xml
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:colorControlHighlight">
<item android:drawable="@color/colorItem" />
我该如何解决这个问题?
答案 0 :(得分:1)
有完全相同的问题。通过更改RecyclerAdapter
中的这行代码解决了这个问题 @Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Context context = parent.getContext();
View view = View.inflate(context, R.layout.simple_list_item_1, parent, null);
return new ViewHolder(view, viewType);
}
到
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Context context = parent.getContext();
View view = LayoutInflater.from(context).inflate(R.layout.simple_list_item_1, parent, false);
return new ViewHolder(view, viewType);
}
显然在没有提供inflater的情况下进行充气,父母会导致不同的LayoutParams。
注意:强>
View view = View.inflate(context, R.layout.simple_list_item_1, parent);
也不起作用,因为该项目尚未添加到父项,其他方面导致错误:java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.