OnClickListener onClick=true 和选择器
Posted
技术标签:
【中文标题】OnClickListener onClick=true 和选择器【英文标题】:OnClickListener onClick=true and selector 【发布时间】:2012-10-11 04:46:08 【问题描述】:我的问题没有找到任何答案,所以我需要你的帮助... 我有一个 LinearLayout,我希望它可以被点击以便午餐另一个活动。所以我实现了一个 onClickListener 。 我为此 LinearLayout 创建了一个选择器,以便当有人点击它时,背景会发生变化。
我只是不明白:
如果我的 LinearLayout 在 xml 中没有 android:clickable="true",我可以点击它并得到我想要的,但选择器不起作用。 如果我删除此行,则相反.. 选择器有效,但 onClick 事件无效。那么,谁能解释一下为什么? 以防万一,这是我的选择器文件的内容:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/btn_restaurants_background_state_pressed" android:state_pressed="true"></item>
<item android:drawable="@drawable/btn_restaurants_background_state_pressed" android:state_focused="true"></item>
<item android:drawable="@drawable/btn_restaurants_background_state_pressed" android:state_selected="true"></item>
<item android:drawable="@drawable/btn_restaurants_background_state_normal"></item>
</selector>
提前谢谢你
【问题讨论】:
这是 ListView 中的一项吗? 不,不是。只是在主布局中动态添加的一项。 你能解决这个问题吗?我几乎相同(不同之处在于我扩展了 LinearActivity,但这没关系)另外,我注意到,这个选择器在 4.1 中运行良好(没有检查其他版本)并且不适用于 2.2 哦,我在这里找到了解决方案:***.com/a/11967506/1048087 【参考方案1】:在 onCreate 方法中:
private LinearLayout llayout;
@Override
public void onCreate(Bundle savedInstance)
super.onCreate(savedInstance);
llayout = (LinearLayout) findViewById(R.id.layout_name);
llayout.setOnClickListener(this);
然后覆盖activity中的onClick方法,
@override
public void onClick(View v)
switch(v.getId())
case R.id.layout_name :
// To change the background
llayout.setBackgroundResource(R.drawable.image_name1);
// To call AnotherActivity
Intent in = new Intent(this, TargetActivityName.class);
startActivity(in);
break;
【讨论】:
您告诉我如何为 onClick 事件创建侦听器。这绝对不是我要问的...... 将属性添加到xml中的listview标签,android:cacheColorHint="@android:color/transparent",这样你的选择器就会出现 它不是 listView 或类似的选择器。它是视图状态的选择器(单击、聚焦、..) 所以我认为没有人有同样的问题? 您要做的一件事是,在列表项布局的左侧保留一个图像视图,这样当您单击特定项目时,该位置的图像视图应该与图像一起可见,否则设置该图像视图隐形以上是关于OnClickListener onClick=true 和选择器的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio的Button控件的onClick属性setOnClickListener函数与OnClickListener接口用法
当 OnClickListener.onClick 中出现 NullPointerException 时 Android 冻结(其他任务无法启动)
OnClickListener onClick=true 和选择器
在swipable列表视图中具有onClickListener的视图不能再刷卡,但仅响应onClick事件