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事件

如何在 Android 中为微调器捕获 onClick 事件

回调深入理解 同步回调 以android中View.OnClickListener为列