遍历 ImageButtons 给予焦点 Android

Posted

技术标签:

【中文标题】遍历 ImageButtons 给予焦点 Android【英文标题】:Iterate through ImageButtons giving focus Android 【发布时间】:2012-06-21 02:04:42 【问题描述】:

我为我的脑瘫女孩开发了一个软件。她在我们的平板电脑中使用它来与我和我的妻子“交流”。

挺好看的。这是一堆“即时”创建的 ImageButton。我的意思是膨胀 XML 代码。

这是一个图像示例:

我只是为我女儿制作的。

我有一个朋友患有肌萎缩侧索硬化症 (ALS)。这是一种可怕的退化性疾病。他只能移动一根手指,我希望他能够使用相同的软件。

为了做到这一点,我必须“迭代”每个 ImageButton,当他想要的那个被聚焦时,他会“点击”鼠标来激活它。

我尝试使用此处描述的内容:

http://developer.android.com/guide/topics/ui/accessibility/apps.html

但它没有用。关于如何做到这一点的任何想法?这对我的 ALS 朋友非常有用。

这是我创建 ImageButtons 的方法:

btn = (ImageButton) LayoutInflater.from(
getBaseContext()).inflate(
R.layout.imagebuttonstyle, fl, false);

我只是使用“OnTouch”事件来处理点击。 imagebuttonstyle 只是一个声明 ImageButton 的 XML 文件。

那么,你们觉得呢?我如何遍历项目以确保当他想要的那个是焦点时,当我的朋友点击他的鼠标时它会被激活?我可以轻松地循环浏览所有项目,但这并不能确保该项目会被他的鼠标​​激活。

非常感谢任何帮助!

【问题讨论】:

嗨 Carlos,Android 小部件已经可以聚焦了。在我看来,您正在为ImageButtons 使用自定义外观,因此为了处理聚焦状态(即,以不同的视觉外观显示按钮),您必须为按钮提供适当的可绘制对象。我认为您无需担心在代码中处理焦点状态。我相信您只需要为按钮提供onClickListener 而不必担心哪个控件被聚焦。如果您需要一些代码的正确答案,请告诉我。最好的问候。 ps.:顺便说一下,这是大卫,来自您的“一美元梦想”活动! :) 很高兴在这里看到你有这么好的目标。 我认为他是说鼠标不会移到按钮上,只是会在屏幕上的某个位置单击它。按钮焦点将通过其他方式更改。因此,我不认为他只想在每个特定按钮上使用 OnClickListener。我不知道,也许我理解错了。 thomas.cloud,你是对的。 ImageButtons 必须以固定的间隔一个一个地聚焦。然后,光标在哪里都没有关系,当用户点击鼠标按钮时,焦点必须被激活 【参考方案1】:

你能用OnClickListener吗?见this question,我认为它正在朝着你可以去的方向发展。或者,您可以使整个布局可点击。然后您可以使用isFocused() 来确定要选择的项目。例如:

LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linear_layout);
linearLayout.setOnClickListener(this);

@Override
public void onClick(View view)
   if (view == linearLayout)
      if (mingua.isFocused())
          //mingua action 
       else if (pao.isFocused())
          //pao action
       //etc...
   

如果您可以将线性布局设置为具有单击侦听器,我不肯定,但如果这不起作用,您可以添加一个覆盖整个屏幕的不可见按钮作为背景层,并在其上设置一个 onClickListener。祝你好运。

【讨论】:

我相信他可以自己设置监听器并查看调用视图。

以上是关于遍历 ImageButtons 给予焦点 Android的主要内容,如果未能解决你的问题,请参考以下文章

如何实现 ImageButtons 的绑定,以便仅在加载图像后显示图像?

JavaFX:如何更改焦点遍历策略?

比较android中的drawables imageButtons

JavaFX:如何管理边框中的焦点遍历

带有onclick的android imagebuttons上的JSON数组响应

第27天:表单获取焦点和数组声明遍历