我做了一个线性布局,我正在添加视图,模拟一个表,因为我已经读过滚动视图中的列表视图不是一个选项:) 所以我在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时,它就停止了工作。
有什么想法吗?我试过玩可聚焦,可点击,重复的父状态,但没有运气。
答案 0 :(得分:0)
您必须将listView设置为OnItemClickListener,而不是OnClickListener。