LoginSignup
6
2

More than 5 years have passed since last update.

Androidで複数レイアウトが重なっているものをクリックした時の挙動について

Last updated at Posted at 2017-03-04

やりたいこと

以下のレイアウトで、TextViewをクリックした時にRelativeLayoutのクリック処理を呼ぶ方法を調べます。
- RelativeLayout
- - LinearLayout
- - - TextView

前提

レイアウトの重複部分をクリックすると、一番上のレイアウトに対して実装されている処理だけが実行されます。
つまり、以下のように各レイアウトに処理を実装しても、TextViewをクリックした場合はTextViewの処理のみ実行されます。(onTouchを実装した場合は異なります。)

MainActivity.java
        TextView textView = (TextView) findViewById(R.id.textView);
        LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearLayout);
        RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.relativeLayout);

        relativeLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.println("RelativeLayout");
            }
        });

        linearLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.println("LinearLayout");
            }
        });

        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.println("textView");
            }
        });

前提の実装確認

今回の画面レイアウトはこんな感じです。シンプルです。
Screenshot_1488629701.png

TextViewの部分(SAMPLE001)をクリックした時:
consoleにtextViewだけが表示される。

この時に、RelativeLayoutのonClickを呼ぶようにします。

検証

TextViewの実装を以下の通り変更するだけです。

MainActivity.java
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.println("textView");
                RelativeLayout grandParent = (RelativeLayout) v.getParent().getParent();</font>
                grandParent.callOnClick();
            }
        });

クリックされたViewの親要素を取得します。
取得した親要素に対して

grandParent.callOnClick();

このようにクリックイベントを発生させれば良いだけです。
consoleに以下の二つが表示されました。

textView
RelativeLayout

簡単でした。

次はonTouchの場合について書きたいと思いまーす。

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2