我想出了一个想法,只要触摸两个TextView就会变得不可见。当我在TextView上触摸单个手指并且只有一个TextView变得不可见时,这个想法就有效。但是当我用两根手指测试它时,只有一个Textview变得不可见。它不会使两个文本视图都隐藏起来。
我写了以下代码。
public class MatchMeaning1 extends Activity implements OnTouchListener{
private static final String TAG = MatchMeaning1.class.getSimpleName();
TextView[] txtWord, txtMeaning;
int [] wordID = {R.id.txtWord1, R.id.txtWord2, R.id.txtWord3, R.id.txtWord4, R.id.txtWord5};
int[] meaningID = {R.id.txtMeaning1,R.id.txtMeaning2, R.id.txtMeaning3, R.id.txtMeaning4, R.id.txtMeaning5 };
String[] word = {"1.abidcation","2.abhor","3.abide","4.abyssmal","5.award"};
String[] meaning = {"a.deep","b.stay","c.cede","d.accolade","5.hate"};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.match_meaning);
txtWord = new TextView[5];
txtMeaning = new TextView[5];
for(int i = 0; i < txtWord.length; i++){
txtWord[i] = (TextView)findViewById(wordID[i]);
txtMeaning[i] = (TextView)findViewById(meaningID[i]);
txtWord[i].setText(word[i]);
txtMeaning[i].setText(meaning[i]);
txtWord[i].setOnTouchListener(this);
txtMeaning[i].setOnTouchListener(this);
}
}
@Override
public boolean onTouch(View v, MotionEvent event) {
int pointerCount = event.getPointerCount();
if(pointerCount == 2){
TextView [] tv = new TextView[2];
for(int i = 0; i < tv.length ;i++){
tv[i] = (TextView)v;
tv[i].setVisibility(TextView.INVISIBLE);
}
}
return true;
}
}
上面的代码不适用于pointerCount = 2,但它适用于pointerCount = 1。 谁能告诉我解决方案?
答案 0 :(得分:1)
onTouch事件基于每个视图进行处理,因此除了您返回true以吞下事件之外,它将为两个textview触发。你想要的可能更接近:
@Override
public boolean onTouch(View v, MotionEvent event) {
if(v != YOUR_TEXT_VIEW1 && v != YOUR_TEXT_VIEW2) return false;
((TextView)v).setVisibility(TextView.INVISIBLE);
return false;
}
替换YOUR_TEXT_VIEW 1&amp; 2,您声明的对象是您想要消失的当前两个文本视图。
修改强>
如果您只希望视图在用户触摸它们时消失,那么您将不得不设计更具参与性的方法。我看到两种可能性:
答案 1 :(得分:0)
您的手机不支持multitouch
事件。这就是为什么如果您一次触摸两个文本视图,它一次只能触发一个事件而一个textview
变得不可见。
首先检查您的手机是否支持多次触摸。