- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在 PopupWindow
中有一个 ListView
。 PopupWindow
是这样初始化的
window.setContentView(root);
window.setTouchable(true);
window.setFocusable(true);
window.setOutsideTouchable(true);
window.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
window.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
然后是 ListView
:
fileList = (ListView) root.findViewById(R.id.explorer_list);
fileList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
fileList.setSelector(android.R.drawable.screen_background_light_transparent);
fileList.setOnItemClickListener(this);
[...]
@Override
public void onItemClick(AdapterView<?> adapter, View v, int pos, long id) {
selected = (File) fileList.getItemAtPosition(pos);
}
像这样,一切正常,除了选择器在 ListView
滚动之前不会显示在选择上(尽管正确选择了项目,但在滚动列表之前没有任何内容显示为已选择)。
如果我将 PopupWindow
设置为不可聚焦,则视觉选择会正常工作(当单击进入时,该项目在视觉上被选中)但永远不会调用 onItemClick()
并且因此我无法获得所选项目。
ListView.getSelectedItem()
在这两种情况下始终返回 null
,即使存在选定项也是如此。
关于如何解决这种情况的任何想法?提前致谢。
最佳答案
我最终使用自定义适配器来存储所选值并从那里使用它来标记它:
public class FileExplorerAdapter extends ArrayAdapter<File> {
/** File names */
private List<File> values = new ArrayList<File>();
/** Currently selected position */
private int selected = -1;
public FileExplorerAdapter(Context context, List<File> values) {
super(context, R.layout.explorer_row, values);
this.values = values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// I know that my layout is always a TextView
TextView row = (TextView) convertView;
if (row == null) {
row = (TextView) ViewHelper.inflateViewById(getContext(),
R.layout.explorer_row);
}
// More code...
// Set up the background for selected element
if (selected == position) {
row.setBackgroundColor(Color.LTGRAY);
// Override background selector
} else {
row.setBackgroundColor(Color.TRANSPARENT);
}
// More code...
return row;
}
/** This sets the selected position */
public void setSelected(int position) {
selected = position;
}
}
在为关联的 ListView
实现 OnItemClickListener
的类上,我在适配器中设置了当前选定的项目。
@Override
public void onItemClick(AdapterView<?> adapter, View v, int pos, long id) {
FileExplorerAdapter fileadapter = (FileExplorerAdapter) fileList
.getAdapter();
fileadapter.setSelected(pos);
}
关于android - PopupWindow 中 ListView 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12706520/
我想在另一个 PopUpWindow 中打开一个 PopUpWindow。我的 MainActivity 中有一个 ImageButtons。当我单击它时,会出现一个 PopUpWindow。我在我的
在 Honeycomb 应用程序中,我在多个地方使用 PopupWindow 的自定义子类来显示各种 View 。这一切都很好,直到其中一个 View 碰巧尝试显示另一个 PopupWindow。 例
android PopupWindow 可以显示另一个 PopupWindow 吗?可以同时打开多少个 PopupWindow?只有一个? 第一个PopupWindow正常显示。但是在单击按钮时(在第
在我的应用程序中,我试图将包含 popupwindow 的 View 设置为不可见,并在一段时间后设置为可见。我的弹出窗口包含图像和文本,我希望弹出窗口的整个 View 及其内容根据某种逻辑显示和不显
当从单独的类调用 PopupWindow 方法时,我希望能够从 xml 文件定义 PopupWindow 中的布局。下面的代码根据需要工作,除了布局是从 java 文件而不是 xml 文件中提取的。在
谷歌开发团队的人能解释一下如何避免在 pre-ics 设备上发生这种崩溃吗?在我的例子中,ListView 项目上的 ImageButton 是 PopupWindow 的 anchor ,用于创建下
PopupWindow 膨胀得很好,直到它接近屏幕底部,它被切断了。有谁知道当它接近屏幕底部时如何让它向上膨胀? public SelectBucketMenu(Context context) {
这个问题已经有答案了: Android popup window dismissal (11 个回答) 已关闭 9 年前。 我创建了弹出窗口 public void myPopUp() {
要创建一个简单的工作 PopupWindow,我们需要执行以下操作: popup_example.xml: Java代码 LayoutInflater infl
有 PopupWindow 的 xml 文件: 如何以编程方式替换此 xml 中的图标和背景? 最佳答案 LinearLayout menuLayout= (LinearLayout) activit
要创建一个简单的工作 PopupWindow,我们需要执行以下操作: popup_example.xml: Java代码 LayoutInflater infl
我想在向其添加布局之前让 PopupWindow 至少显示一个空矩形。 这不起作用: public void configure() { LinearLayout linearLayout =
我在使用 PopupWindow android 默认小部件时遇到了问题。当我触摸按钮显示弹出窗口而不是按手机上的后退按钮时,在显示弹出窗口之前,我有强制关闭消息,接下来是错误: 10-14
如何将键事件从可聚焦的 PopupWindow 分派(dispatch)到基础 Activity。如果我设置窗口可聚焦,它会消耗所有事件。我希望能够拦截一个 key ,并处理事件。 这是我的困境:我的
我想通过点击窗口外部或按下后退按钮来关闭 PopupWindow。现在你可以点击屏幕上的任何地方,窗口会关闭,我不明白为什么。我还想给 PopupWindow 添加一个阴影。谢谢! 主要 Activi
在我的一个 Activity 中,有一个按钮,单击它会打开一个PopupWindow。我的 Intent 是,当 PopupWindow 打开并且用户单击屏幕上弹出区域以外的任何地方时,应该关闭 Po
目前,我在线性布局中有一个按钮,如下所示: 我还有一个 createPopup 扩展(它确实在单击按钮时执行)。 public void createPopup(View view) {
我有一个用于显示谷歌地图的弹出窗口,但一旦它打开我似乎无法关闭它,我试图设置后退按钮以关闭它但无法调用 onBackButtonClick当我在 fragment 中时覆盖。虽然似乎没有做任何事情
我想像 Google Keep 在创建提醒时那样在虚拟键盘上方显示一个 PopupWindow: 最佳答案 我相信,您正在寻找的是以下组合: popupWindow.setSoftInputMode(
我如何显示和隐藏同一个弹出窗口,而不是每次都创建一个对象。这就是我创建窗口的方式。我不想解雇();并出于性能原因每次重新创建窗口。 popupWindow = new PopupWindow(
我是一名优秀的程序员,十分优秀!