gpt4 book ai didi

android - 如何使两个 TextView 在 android 中触摸时不可见

转载 作者:太空狗 更新时间:2023-10-29 14:29:06 25 4
gpt4 key购买 nike

我想出了一个想法,当触摸两个 TextView 时,它们都变得不可见。当我用一根手指触摸 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。谁能告诉我解决方案?

最佳答案

onTouch 事件是在每个 View 的基础上处理的,因此它会为两个 TextView 触发,除非您返回 true 以吞没该事件。您想要的可能更接近于:

@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 和 2 替换为您声明为要消失的当前两个 TextView 的对象。

编辑:

如果您只希望 View 在用户同时触摸它们时消失,您将不得不设计一种更复杂的方法。我看到两种可能性:

  1. onTouch 事件需要调用另一个函数,该函数附加由每个唯一的 MotionEvent 触发的所有 View 。将 View 附加到列表后,该函数检查是否存在两个预期 View 。如果是这样,触发隐身调用。
  2. 不要使用 onTouch,而是使用 onTouchEvent方法并确定 getX(index) getY(index) 坐标是否落在您期望被触摸的两个 View 内。

关于android - 如何使两个 TextView 在 android 中触摸时不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8574622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com