android - 使textView不可见

时间:2016-12-24 13:06:15

标签: java android ontouchlistener

当我的应用程序启动时,用户需要在实际操作开始之前触摸屏幕。我有一个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) 
        {

        }

    }
}

6 个答案:

答案 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
  1. 现在您可以在第3个参数中看到ACTION_DOWN,您可以识别动作ACTION_MOVEACTION_UPonClickListner
  2. 现在想想你曾经使用过它们吗?你有一个关于触摸的想法,所以尝试使用触摸事件..但你不使用它们。所以它与 // 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内直接使用这些视图onCreateonCreate,或者将它们保存在方法中,然后您可以从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);

设置的布局xml中

- 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而不是隐身。同时说明TextViewonTouch的当前 visibilty ,然后将其设置为

  tv.setVisibility(View.GONE);