2010-06-06 89 views
6

我有一个相当复杂的ListView。每个项目看起来是这样的:ListView项目不可点击Horizo​​ntalScrollView里面

> LinearLayout (vertical) 
    > LinearLayout (horizontal) 
    > include (horizontal LinearLayout with two TextViews) 
    > include (ditto) 
    > include (ditto) 
    > TextView 
    > HorizontalScrollView (this guy is my problem) 
    > LinearLayout (horizontal) 

在我的活动,一个项目被创建时(getView()叫)我添加动态TextView S到HorizontalScrollViewLinearLayout(除了填充其他更简单的东西了)。令人惊讶的是,表现非常好。

我的问题是,当我添加HorizontalScrollView时,我的列表项变得无法点击。点击时他们不会获得橙色背景,并且他们不会触发我设置的OnItemClickedListener(执行简单的Log.d调用)。

如何让我的列表项再次点击?


编辑:设置在最高LinearLayoutandroid:descendantFocusability="blocksDescendants"似乎工作。不过,我想知道是否还有其他方法:如果我想在我的列表项目中设置可聚焦的项目,该怎么办?

回答

8

在最上面的LinearLayout上使用android:descendantFocusability="blocksDescendants"做了诀窍。里面的元素仍然可以“可点击”,但它们只是不可聚焦(即,您无法在非触摸屏设备上点击它们)。对我来说足够了。

0

当我申请Horizo​​ntalScrollView我TableLayout滚动工作正常,但无法点击列表项 我的布局为follwos

的LinearLayout Horizo​​ntalScrollView TableLayout ......... /TableLayout /Horizo​​ntalScrollView /LinearLayout中

我施加机器人:descendantFocusability =“blocksDe “我的最高线性布局”任何帮助

0
android:descendantFocusability="blocksDescendants" 

没有帮助我。 所以

所以,我意识到监听模式。

public interface EventListItemOnClickListener { 
    public void itemClicked(); 
} 

而且在适配器通知所有侦听

private List<EventListItemOnClickListener> listeners; 
protected void notifyOnClick(int position){ 
    for(int i=0; i<listeners.size();++i) 
    listeners.get(i).itemClicked((Event)events.get(position)); 
} 
... 
    @Override 
    public void onClick(View v) { 
     notifyOnClick(position); 
    } 
... 
相关问题