我在LinearLayout中有三个水平排列的TextView。我想要做的是,当用户从第一个TextView开始触摸时,按下第二个TextView,最后在第三个TextView处结束触摸,并且所有三个TextView都应该用不同的背景颜色突出显示。我原本以这种方式尝试过:
final TextView tv1 = (TextView)findViewById(R.id.text1);
tv1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
tv1.setBackgroundColor(Color.YELLOW);
return true;
}
});
final TextView tv2 = (TextView)findViewById(R.id.text2);
tv2.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
tv2.setBackgroundColor(Color.BLUE);
return true;
}
});
final TextView tv3 = (TextView)findViewById(R.id.text3);
tv3.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
tv3.setBackgroundColor(Color.RED);
return true;
}
});
但结果是所有触摸,即使我在第一个TextView上调用onTouch()的ACTION_MOVEing到TextView 2。我想到的唯一一件事就是将OnTouchListener附加到父布局和每个触摸事件,查看当前触摸事件是否在任何子TextView上,并更改该子项的背景颜色(如果有)。但是我想知道Android是否有API这样做,或者有任何聪明的方法可以这样做。
答案 0 :(得分:0)
您可以为每个文本视图使用选择器
android:background="@drawable/selector"
secltor drawable
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:drawable="@drawable/selected_state" />
</selector>
selectedstate
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/required_color" />
</shape>