android子视图没有按状态

时间:2012-01-15 22:42:58

标签: android xml listview android-layout view

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

问题在于,对于我添加的视图,我无法触发任何按下状态来更改图形,因为它在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);
        }
    }

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

<?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 个答案:

答案 0 :(得分:0)

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