涟漪效应在listview中不起作用

时间:2016-11-23 14:44:07

标签: android android-layout listview xamarin.android material-design

我在android中有一个可点击的列表视图,当我选择一个项目时,涟漪效果正常工作,但我更改了我的样式文件,为按钮中的涟漪效果工作添加了此行

<style name="InflorTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
         //other things
         <item name="colorControlHighlight">@color/ripple_material_dark</item>
    </style>

添加此行后,涟漪效果在按钮中起作用,但在listview中不起作用。

有什么建议可以解决我的问题吗?

这是我的文件:

<resources>
    <style name="InflorTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="colorControlNormal">@color/colorAccent</item>
        <item name="colorControlHighlight">@color/ripple_material_dark</item>
    </style>
    <style name="InflorTheme" parent="InflorTheme.Base">
    </style>
    <style name="InflorTheme.Splash" parent="android:Theme">
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:windowBackground">@drawable/splash</item>
        <item name="android:windowNoTitle">true</item>
    </style>
</resources>

这是我的风格v-21:

<resources>
    <style name="InflorTheme" parent="InflorTheme.Base">
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="android:windowContentTransitions">true</item>
        <item name="android:windowAllowEnterTransitionOverlap">true</item>
        <item name="android:windowAllowReturnTransitionOverlap">true</item>
        <item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
        <item name="android:windowSharedElementExitTransition">@android:transition/move</item>
    </style>
</resources>

这是我的列表视图:

<Mvx.MvxListView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/listBoletins"
            android:footerDividersEnabled="true"
            android:headerDividersEnabled="true"
            android:dividerHeight="1dp"
            android:textFilterEnabled="false"
            android:layout_weight="1"
            android:background="?android:attr/selectableItemBackground"
            local:MvxBind="ItemsSource Boletins; ItemClick BoletimClickCommand"
            local:MvxItemTemplate="@layout/boletinsitem" />

3 个答案:

答案 0 :(得分:2)

在要在适配器中呈现的项目中添加此项。 android:foreground="?attr/selectableItemBackground" android:clickable="true" 在你看来

答案 1 :(得分:0)

为什么你这么简单的事情如此复杂。你应该使用Listview或&#34; appcompat listview&#34; mvxListView的内容,并尝试根据您的要求改变您的风格。

如果您对自定义列表视图有自己的限制,那么您应该尝试这样。 myview 是您的布局视图

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_layout);

    View myView = findViewById(R.id.myView);
    int[] attrs = new int[]{R.attr.selectableItemBackground};
    TypedArray typedArray = getActivity().obtainStyledAttributes(attrs);
    int backgroundResource = typedArray.getResourceId(0, 0);
    myView.setBackgroundResource(backgroundResource);
}

并在xml文件中添加此行

<android:background="?android:attr/selectableItemBackground">

答案 2 :(得分:0)

简单

<ListView
    ...
    android:drawSelectorOnTop="true"/>

将在列表视图上启用波纹效果。