问题描述
我的应用中有一个搜索功能,我可以在其中上下移动菜单中的图标。如果我点击向上和向下图标,我可以看到图标上的涟漪效果。现在,当我点击键盘上的搜索按钮时,我想执行向上图标功能。为了以编程方式实现这一点,我编写了图标单击操作。我可以启动图标功能,但不能对图标产生连锁反应。有没有办法对图标产生连锁反应?
searchEdit.setonEditorActionListener { _,actionId,_ ->
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
actionUpMenuItem?.let {
onoptionsItemSelected(it)
}
true
} else {
false
}
}
而且我也试过这个,我看不到两个函数的涟漪效应
searchEdit.setonEditorActionListener { _,_ ->
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
optionMenu?.performIdentifierAction(R.id.action_up,0)
true
} else {
false
}
}
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_up"
android:foreground="?attr/selectableItemBackground"
android:icon="@drawable/ic_search_up_arrow"
android:orderInCategory="94"
android:title="@string/description_item_up"
app:showAsAction="always" />
<item
android:id="@+id/action_down"
android:foreground="?attr/selectableItemBackground"
android:icon="@drawable/ic_search_down_arrow"
android:orderInCategory="95"
android:title="@string/description_item_down"
app:showAsAction="always" />
</menu>
解决方法
创建您的自定义涟漪效果 ripple_effect_small_corner
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:attr/colorControlHighlight">
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="#000000" />
<corners android:radius="@dimen/_2sdp" />
</shape>
</item>
<item android:drawable="@drawable/list_item_background_small_corner" />
</ripple>
创建可绘制对象 list_item_background_small_corner
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/whitecolor"/>
<stroke android:width="1dp" android:color="@color/divider" />
<corners android:radius="@dimen/_2sdp"></corners>
</shape>
你可以这样使用:
android:background="@drawable/ripple_effect_small_corner"