android子视图无按下状态

android子视图无按下状态,android,xml,listview,android-layout,view,Android,Xml,Listview,Android Layout,View,我制作了一个线性布局,在上面添加视图,模拟一个表,因为我读到scrollview中的listview不是一个选项:) 所以我有一个线性布局,在scrollview中包含wrap_内容 问题是,对于我正在添加的视图,我不能像以前一样触发任何按下状态来更改图形,当它在listview中时,效果非常好 我有以下资料: if (arrayWorksWith.size()!=0) { this.listAdapter = new WorksWithListAdapter(t

我制作了一个线性布局,在上面添加视图,模拟一个表,因为我读到scrollview中的listview不是一个选项:) 所以我有一个线性布局,在scrollview中包含wrap_内容

问题是,对于我正在添加的视图,我不能像以前一样触发任何按下状态来更改图形,当它在listview中时,效果非常好

我有以下资料:

    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);
        }
    }
因此,当我点击一个单元格时,这段代码在列表视图中,图像改变了背景,提供了视觉反馈,但当我现在创建它并将其添加到线性布局时,它停止了工作


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

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

<?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;
                     }
                });