2013-07-09
TextViewのclickイベントを、タップした箇所によって振り分ける
Android4.2にて。 具体的に言うと、1つのTextViewにおいて、左半分をタップした時と右半分をタップした時とでイベントを振り分けたかった。その時の実装手順メモ。
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要素の右半分をタップした時
TextView要素の左半分をタップした時
以上。