[英]android - make textView invisible
当我的应用启动时,用户需要先触摸屏幕,然后才能执行实际操作。 我有一个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)
{
}
}
}
1. if(something)
要查看它是否为true/false
则始终使用if(something)
而不是编写if(something == true)
[something是一个布尔值,赋值为true。]
2.如果您将xml指向使用android:onClick
的方法,如下所示,
<Button android:id="@+id/mybutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click me!"
android:onClick="onTouch" />
。 实现OnGestureListener
的意义OnGestureListener
?
如果我在onCreate
执行此操作, onCreate
初始化我的视图
View myView = findViewById(R.id.my_view);
3.如果我真的想要触摸我会这样做
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.
}
});
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);
}
});
这些浏览onClickListner
或setOnTouchListener
你可以直接使用它们里面onCreate
或者让他们的方法里,你甚至可以从该方法onCreate
。 为什么要保留布尔值? 没什么大不了的
注意我认为myView是背景布局,而不是您的textView,background是您单击/触摸的背景
因此,现在您多次更改了问题代码,我希望这是最终的更改。 仅比我的答案有用。
您已经在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);
设置的布局xml中setContentView(R.layout.activity_game);
-在您的TextView
的xml属性中声明了onTouch()
方法
android:onClick="onTouch"
并将TextView
clickable设置为true:
android:clickable="true";
如果您实现onGestureListener()
我认为触摸事件已由侦听器占用,并且您的TextView
无法识别onTouch()
。 如果您在活动中未进行任何手势检测,请删除此实现。
您正在检查是否在onCreate()
触摸了屏幕,该onCreate()
在活动开始时仅被调用一次。 全局初始化TextView并在onTouch(View v, MotionEvent event)
onTouch()
onTouch(View v, MotionEvent event)
内设置其可见性另外,您的onTouch()
是不正确的。 您应该重写public boolean onTouch(View v, MotionEvent event)
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;
}
});
}
}
除了实现OnGestureListener
setOnTouchListener
,还可以在活动布局的根视图中添加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;
}
});`
在onCreate
方法上使用以下代码,并且将visibility
设置为GONE
而不是不可见。 还规定了当前公开程度 TextView
在onTouch
然后将其设置为
tv.setVisibility(View.GONE);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.