【问题标题】:setOnClickListener on RelativeLayout with ImageButton and TextField在具有 ImageButton 和 TextField 的 RelativeLayout 上的 setOnClickListener
【发布时间】:2013-06-19 15:05:34
【问题描述】:

我有一个 RelativeLayout,我有一个 ImageButton 和一个 TextField。

当我将 on click 侦听器设置为此 RelativeLayout 时,如果我触摸文本,它会正常工作,但按钮不会触发它。

如果我也将 on click 侦听器添加到 ImageButton,它就可以工作。 我真的需要这样做吗?还是我错过了什么?两者都做似乎很浪费,尤其是当我的应用程序中出现这种情况时。

提前致谢

m_view.findViewById(R.id.menu_relativeLayout_home).setOnClickListener(this);
m_view.findViewById(R.id.menu_imageButton_home).setOnClickListener(this);

   @Override
   public void onClick(View p_view)
   {
      switch (p_view.getId()) 
      {
         case R.id.....:
         {
            ...
            break;
         }
         case R.id....:
         {
            ...
            break;
         }
         case R.id.menu_imageButton_home:
         case R.id.menu_relativeLayout_home:
         {
            GoHome();
            break;
         }
      }
   }

【问题讨论】:

  • 尝试将可点击的 false 放入 ImageButton 的 xml 中
  • 通过为所有孩子设置 android:duplicateParentState 属性解决了你的问题??
  • 任何人都知道更好的解决方案,而不是为相对布局和 ImageButton 添加 2 个侦听器?

标签: android listener android-relativelayout imagebutton onclicklistener


【解决方案1】:

是的,您必须将 onClickListener 添加到两者。那么该项目将如何拥有注册的侦听器。

【讨论】:

  • 嗯,但我从来没有在 TextField 上设置它,而是点击文本。还是我只是碰巧触到了文字?
【解决方案2】:

android:duplicateParentState="true" 设置为所有子级,这会将点击传播给所有子级。

【讨论】:

    【解决方案3】:

    只需将android:duplicateParentState 添加到true 这将解决您的问题并将clickListner 设置为仅父级。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-19
      • 2014-10-16
      • 1970-01-01
      相关资源
      最近更新 更多