setOnClickListener只有一个包含许多其他视图的相对布局的视图

问题描述:

我有一个相对的布局组成的几个自定义视图,当我点击其中一个视图说“NavigationSelector”另一个视图说“AssistanceSelector”必须修改。我已经为NavigationSelector的对象添加了setOnClickListener事件,但我发现在任何地方点击了NavigationClickListener所调用的整个相对布局。setOnClickListener只有一个包含许多其他视图的相对布局的视图

<RelativeLayout 
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    > 

    <com.dashboard.customviews.NavigationSelector 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:id="@+id/navigationSelector"> 
    </com.dashboard.customviews.NavigationSelector> 

    <com.dashboard.customviews.AssistanceSelector 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:id="@+id/assistanceSelector"> 
    </com.dashboard.customviews.AssistanceSelector> 

Activity.java: 

    NavigationSelector objNavigationSelector=null; 
    objNavigationSelector=(NavigationSelector)findViewById(R.id.navigationSelector); 
    objNavigationSelector.setOnClickListener(new NavigationClickListener(this)); 

class NavigationClickListener implements OnClickListener 

public void onClick(View v) { 

     switch (v.getId()) { 
     case R.id.navigationSelector: //do required stuff 
      break; 
     ... 
     } 

添加标签android:clickable="false"到您不希望被点击的布局项目。

希望它有帮助!

+0

恐怕它不起作用。我将android:clickable =“false”设置为相对布局中的所有其他项目,但点击仍在被识别。 – rosemary 2012-01-03 09:14:37

我认为这是因为你的两个观点共享相同的位置。修复你的布局参数,都有android:layout_alignParentLeft="true"

+0

否在自定义视图中,我已将一个对象放在另一个对象的上方 – rosemary 2012-01-03 09:16:16

+0

NavigationSelector cutomview: int canvasHeight = canvas.getHeight(); int centreX = 10; int NaviSelectorHeight = NaviSelector.getHeight(); int NaviSelectorcentreY =(canvasHeight - NaviSelectorHeight)/ 2-40; canvas.drawBitmap(NaviSelector,centreX,NaviSelectorcentreY,SelectorPaint); AssistanceSelect cutomview: int centreX = 10; int AssistSelectorHeight = AssistSelector.getHeight(); int AssistSelectorcentreY =(canvasHeight - AssistSelectorHeight)/ 2; canvas.drawBitmap(AssistSelector,centreX,AssistSelectorcentreY,SelectorPaint); – rosemary 2012-01-03 09:22:17