当我的应用程序启动时,用户需要在实际操作开始之前触摸屏幕。我有一个textView
,它提示触摸屏幕。
触摸屏幕后,我希望文本不可见。现在,textView
永远不会消失,永远留在前面。
public class MainActivity extends Activity implements OnGestureListener
{
public boolean touched = false;
TextView mMyView;
public void onTouch()
{
mMyView.setVisibility(View.GONE);
touched = true;
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
mMyView = (TextView)findViewById(R.id.textView6);
if(touched == true)
{
}
}
}
答案 0 :(得分:2)
1.如果你想查看if(something)
是否true/false
而不是写if(something == true)
,那么总是使用android:onClick
[某事是指定值为真的boolian。]
2.如果您使用下面的<Button android:id="@+id/mybutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click me!"
android:onClick="onTouch" />
将您的观点xml指向某个方法,
OnGestureListener
。
实施onCreate
的重点是什么?
如果我这样做View myView = findViewById(R.id.my_view);
我初始化我的观点
myView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// ... Respond to touch events --> tv.setVisibility(View.INVISIBLE);
return true; // if you return false with this then the listener will not be called for the subsequent ACTION_MOVE and ACTION_UP string of events.
}
});
3.如果我真的想要触摸,我会这样做
MotionEvent
ACTION_DOWN
,您可以识别动作ACTION_MOVE
,ACTION_UP
和onClickListner
现在想想你曾经使用过它们吗?你有一个关于触摸的想法,所以尝试使用触摸事件..但你不使用它们。所以它与 // view is the background layout
myView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Do something here --> Hide your text tv.setVisibility(View.INVISIBLE);
}
});
在您的情况下的作用相同。如果你想动作使用我给的第3个。
但只是你可以使用
onClickListner
您可以在setOnTouchListener
内直接使用这些视图onCreate
或onCreate
,或者将它们保存在方法中,然后您可以从str_formula = 'Or(A, And(B, C, D), E, F, And(G, H))'
调用该方法。为什么要保留布尔值?这没什么大不了的。
注意我认为myView是背景布局而不是textView,背景是你点击/触摸的那个
答案 1 :(得分:1)
所以现在你多次改变了问题代码,我希望这是最后的改变。只有我的回答才有帮助。
您已在onCreate()
:
if(touched == true)
{
tv.setVisibility(View.INVISIBLE);
}
但这是直接执行的,与您onTouch()
方法无关。假设您的onTouch()
正常工作。制作TextView
全球:
TextView mMyView;
在onCreate()
中初始化它:
mMyView = (TextView)findViewById(R.id.textView6);
然后将其隐藏在onTouch()
:
onTouch(View view){
mMyView.setVisibility(View.GONE);
}
但是你必须确保你的方法onTouch()
有效。您可以创建Toast
或日志进行检查。你必须确定:
- TextView
位于您使用setContentView(R.layout.activity_game);
- onTouch()
方法在TextView
的xml属性
android:onClick="onTouch"
并将TextView
的可点击设置为true:
android:clickable="true";
如果您实施onGestureListener()
,我认为听众会使用触摸事件,并且您的TextView
识别onTouch()
。如果您未在活动中进行任何手势检测,请删除此实施。
答案 2 :(得分:0)
您正在检查onCreate()
中是否触摸了屏幕,该屏幕在活动开始时仅被调用一次。全局初始化TextView并在onTouch(View v, MotionEvent event)
内设置其可见性
你的onTouch()
也不正确。您应该覆盖public boolean onTouch(View v, MotionEvent event)
答案 3 :(得分:0)
public class MainActivity extends Activity
{
public boolean touched = false;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
TextView tv = (TextView) findViewById(R.id.textView6);
tv.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
touched = true;
tv.setVisibility(View.INVISIBLE);
return true;
}
});
}
}
答案 4 :(得分:0)
而不是实施OnGestureListener
在您的活动布局的根视图中添加setOnTouchListener
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rlTestView"/>
例如rlTestView
是您的活动的根布局ID,然后使用oncreate
方法中的以下代码
((RelativeLayout)findViewById(R.id.rlTestView)).setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
tv.setVisibility(View.GONE);
return true;
}
});`
答案 5 :(得分:-1)
在onCreate
方法上使用以下代码,然后将visibility
设置为GONE
而不是隐身。同时说明TextView
中onTouch
的当前 visibilty ,然后将其设置为
tv.setVisibility(View.GONE);