setOnClickListener только для одного представления относительного расположения, которое содержит много других представлений - PullRequest
0 голосов
/ 02 января 2012

У меня есть относительный макет, состоящий из нескольких пользовательских представлений. Когда я щелкаю по одному из представлений, говорят «NavigationSelector», другое представление говорит, что «AssistanceSelector» должен быть изменен. Я добавил событие setOnClickListener для объекта NavigationSelector, но я заметил, что везде, где я щелкаю по всей относительной компоновке, вызывается NavigationClickListener.

    <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;
        ...
        }

Ответы [ 2 ]

0 голосов
/ 02 января 2012

Я думаю, это потому, что ваши два взгляда совпадают. Исправьте параметры макета, оба имеют android:layout_alignParentLeft="true"

0 голосов
/ 02 января 2012

Добавьте тег android:clickable="false" к элементам макета, на которые вы не хотите нажимать.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...