読者です 読者をやめる 読者になる 読者になる

MogLog

メモというか日記というか備忘録というか

TextViewのclickイベントを、タップした箇所によって振り分ける

Android4.2にて。
具体的に言うと、1つのTextViewにおいて、左半分をタップした時と右半分をタップした時とでイベントを振り分けたかった。その時の実装手順メモ。

f:id:mogulla3:20130709204254p:plain

FrameLayoutを利用して、透明のビューを左半分、右半分と配置し、その上にTextViewを重ねることで実装できた。ただし、この実装方法が正しいという保証はない(むしろゴリ押し感がある)。

sample.xml(レイアウトファイル)

<FrameLayout
    android:background="#696969"
    android:layout_width="match_parent"
    android:layout_height="100dp">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:onClick="rightTap" />

        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:onClick="leftTap" />

    </LinearLayout>

    <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:textColor="#fff"
            android:textSize="30sp"
            android:text="TextView" />

</FrameLayout>


MainActivity.java(※抜粋)

public void rightTap(View view) {
    Toast.makeText(getApplicationContext(), "right!", Toast.LENGTH_SHORT).show();
}
public void leftTap(View view) {
    Toast.makeText(getApplicationContext(), "left!", Toast.LENGTH_SHORT).show();
}


TextView要素の右半分をタップした時
f:id:mogulla3:20130709204408p:plain


TextView要素の左半分をタップした時
f:id:mogulla3:20130709204426p:plain

以上。