2012-09-28 39 views
0

我的应用程序有几个RelativeLayout s,其中每个TextViewListView。我已将RelativeLayout设为可点击(并且效果很好)。问题是,嵌入在其中的ListView也是可点击的,并且只要用户试图用列表单击RelativeLayout的区域,点击就会注册列表。Android-点击进入可点击的RelativeLayout而不是RL的ListView

我试过将ListView设置为clickable="false"focusable="false"。我在RelativeLayout上试过descendantsFocusability="blockDescendants"。那些不起作用。

解决方案是什么?这是我的第一个应用程序,我错过了什么?

感谢

回答

0

我通过使列表项onItemClick方法模仿他们的父母的RelativeLayout的onclick方法解决我的问题。

如果父亲的RelativeLayout会导致fragmentA,那么其子列表中的每个项目也会导致fragmentA。

这感觉有点半熟又便宜,但现在起作用。

0

据我所知,如果你还没有定义的ListView对象有机器人:onclick属性=“”那么他们应该不会响应点击事件。但是,将它们设置为clickable =“false”不会造成伤害。

管理中的机器人活动的onclick事件的最简单方法是定义应该click事件以这种方式被监控的布局每个视图:

public void onClick(View v) { 
    switch(v.getId()){ 
      case R.id.ITEM1 : 
       //Insert stuff to do when clicked here 
      break; 
      case R.id.ITEM2 : 
       //Insert stuff to do when clicked here 
      break; 
    } 
} 

这个方法应该在活动执行的是具有通过编程或XML布局定义的相对布局和适当的视图。如果你不想使用开关的情况下你总是可以替代if-else语句的条件沿线的,如果(v.getId()== R.id.ITEM_TO_CHECK)是...

欢呼声中,

杰米

+0

谢谢,但将listviews设置为clickable =“false”不起作用(focusable =“false”);他们的项目仍然是可点击的,并且它们阻止了RelativeLayout被点击。 – LoneDuck

+0

为什么不调用相同的逻辑if(v.getId()== layout.getId())|| (v.getId()== list.getId())? –

+1

我相信ListView的工作方式是ListView本身不是您需要停止点击的东西,ListView持有的项目需要通过查找onClick操作来缓解。 ListView本身会注册onClick动作,但只是确定您点击哪个项目并触发项目的相应事件。也许如果你可以通过寻找onClick事件来抑制这些项目,那可能会起作用,但是也会打败拥有listView的点。 – Jamie