gpt4 book ai didi

android - 带有 ListView 的上下文操作栏,setselected 不工作

转载 作者:太空狗 更新时间:2023-10-29 15:12:59 25 4
gpt4 key购买 nike

我正在尝试制作一个上下文相关的 ActionBar。我使用了来自 android devpage 的示例,但我仍然没有让它工作。我在 onitemlongclick 上设置了一个事件监听器,但是 setSelected(true) 似乎没有做任何事情。我知道事件已触发,因为 actionmode 已打开,但它没有选择任何项目。

longclicklistener 位于 fragment 中,由 Activity 中的viewpager 持有,该 Activity 持有 fragment 。我希望能够从页面中选择项目,然后对这些选择进行一些操作。

我当前的代码:

fragment :

AdapterView.OnItemLongClickListener onLongClick = new AdapterView.OnItemLongClickListener() {
// Called when the user long-clicks on someView
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view,
int i, long l) {
MainActivity parent = (MainActivity)getActivity();
if (parent.actionMode != null) {
return false;
}

parent.actionMode = getActivity().startActionMode(parent.actionModeCallback);
view.setSelected(true);
return true;
}
};

Activity中的 Action 模式回调

public ActionMode.Callback actionModeCallback = new ActionMode.Callback() {

// Called when the action mode is created; startActionMode() was called
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
// Inflate a menu resource providing context menu items
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.contextual_actionbar, menu);
return true;
}

// Called each time the action mode is shown. Always called after onCreateActionMode, but
// may be called multiple times if the mode is invalidated.
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false; // Return false if nothing is done
}

// Called when the user selects a contextual menu item
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_remove_list:
mode.finish(); // Action picked, so close the CAB
return true;
default:
return false;
}
}

// Called when the user exits the action mode
@Override
public void onDestroyActionMode(ActionMode mode) {
actionMode = null;
}
};

最佳答案

这是一个旧帖子,但对于所有新人......

要设置选中时更改颜色的 View ,您需要使用 color state list .颜色状态列表是一个 xml 资源文件,指定应应用哪种样式取决于 View 所处的状态(已选择是其中一种状态)。像这样:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:color="@color/textColor" android:drawable="@color/Background" android:state_selected="true"/>
<item android:color="@color/textColor" android:drawable="@color/Background"/>

</selector>

在此处保存 XML 文件:res/color/filename.xml

你必须在这个 XML 资源的 View 上设置你的 android:background(你需要根据状态改变的任何属性,即 android:textColor) .

然后,当您setSelected(true) 时,将应用适当的样式。请注意,@drawable 用于背景颜色,而 @color 用于其他组件,例如文本颜色。

关于android - 带有 ListView 的上下文操作栏,setselected 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15181347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com