android子视图没有按下状态

Posted

技术标签:

【中文标题】android子视图没有按下状态【英文标题】:android child view no press state 【发布时间】:2012-02-11 00:57:24 【问题描述】:

我已经做了一个线性布局,我正在添加视图,模拟一个表格,因为我已经读到滚动视图中的列表视图不是一个选项:) 所以我在滚动视图中有一个带有 wrap_content 的线性布局。

问题是,对于我添加的视图,我无法触发任何按下状态来更改图形,因为它在列表视图中时效果很好。

我有以下几点:

    if (arrayWorksWith.size()!=0)
    
        this.listAdapter = new WorksWithListAdapter(this, R.layout.works_with_cell, R.id.lblItemTitle, arrayWorksWith);

        for (int i=0; i<arrayWorksWith.size(); i++)
        
            View v = this.listAdapter.getView(i, null, layoutTblWorksWith);
            v.setTag(new Integer(1000 + arrayWorksWith.get(i).getId()));
            v.setOnClickListener(this);

            layoutTblWorksWith.addView(v);
        
    

问题是点击事件被触发,但我没有任何视觉反馈。在该视图中,我有一个背景设置为以下可绘制对象的 Imageview:

<?xml version="1.0" encoding="utf-8"?> 

<selector xmlns:android="http://schemas.android.com/apk/res/android">     

<item android:state_pressed="true" android:drawable="@drawable/r1" /> <!-- pressed -->     
<item android:state_focused="true" android:drawable="@drawable/r1" /> <!-- focused -->
<item android:drawable="@drawable/transparent_background" /> <!-- default --> 

</selector>

我也刚刚在我添加的视图上尝试了一个触摸监听器,但这也失败了:(

                v.setOnTouchListener(new OnTouchListener()
                
                     public boolean onTouch (View v, MotionEvent event)
                     
                         TextView lblCategoryTitle = (TextView)v.findViewById(R.id.lblItemTitle);                       

                         if(event.getAction() == MotionEvent.ACTION_DOWN)
                         
                             lblCategoryTitle.setTextColor(R.color.white);
                         
                         else if (event.getAction() == MotionEvent.ACTION_UP)
                         
                             lblCategoryTitle.setTextColor(R.color.textLabel_blue);
                         

                         return false;
                     
                );

因此,当我点击单元格时,当此代码位于 ListView 中时,图像正在更改背景并提供视觉反馈,但是当我现在创建它并将其添加到 LinearLayout 时,它停止工作。

有什么想法吗?我尝试过使用可聚焦、可点击、重复的父状态,但没有成功。

【问题讨论】:

【参考方案1】:

您必须将 listView 设置为 OnItemClickListener,而不是 OnClickListener。

【讨论】:

以上是关于android子视图没有按下状态的主要内容,如果未能解决你的问题,请参考以下文章

奇怪的列表视图项目选择器外观(手指离开屏幕时未移除按下状态)

Android中的按下状态传播

在android中,为啥我的服务在按下电源按钮后没有进入睡眠状态

如何在android中将按钮置于按下状态

改变Android按钮背景颜色的高效方法

按下大视图通知按钮后如何敬酒