沿TextView宽度的波纹效果

时间:2016-02-14 22:42:39

标签: java android xml android-recyclerview ripple

我在回收者的视图项目中使用了涟漪效果,但效果不会扩展 到视图的整个宽度。例如,如果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" />

我该如何解决这个问题?

1 个答案:

答案 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.

祝你好运!