我们可以在不可见的TextView - Android上编写onClickListener吗?

时间:2015-01-14 05:24:15

标签: android android-layout onclicklistener

这是我的xml文件,在TextView上就是

<TextView
    android:id="@+id/hello"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world"
    android:textColor="#ffffff"
    android:background="#000000"
    android:clickable="true"
    android:visibility="invisible" />

这是我的活动代码,我在文本视图上写活动。我想点击它时可以看到/隐藏文本视图。

     protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_visibility_test);
        view=(TextView) findViewById(R.id.hello);
        view.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            if(view.getVisibility()==View.VISIBLE)
            {
                Log.d("visibility test", "Visible");
                view.setVisibility(View.INVISIBLE);
            }
            else
            {
                Log.d("visibility test", "inVisible");
                view.setVisibility(View.VISIBLE);
            }
        }
    });
}

4 个答案:

答案 0 :(得分:1)

是的,您可以在不可见的视图上拥有事件侦听器。

答案 1 :(得分:1)

<强> XML:

<TextView android:id="@+id/hello"
    android:layout_weight="1"
    android:layout_width="wrap_content"
    android:layout_height="0dip"
    android:hint="@string/A2"
    android:visibility="invisible"/>

<强>代码:

Button abutton = (Button) findViewById(R.id.AButton);
abutton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
        TextView tv = AndroidAssignment2_1.this.findViewById(R.id.Answers);
        tv.setVisibility(View.VISIBLE);
    }
}); 

答案 2 :(得分:0)

是的,我们可以为不可见ClickListener设置views检查此link,视图为invisible,但它仍占用空间用于布局目的。

答案 3 :(得分:0)

绝对可以,但如果视图不可见,则不会触发onClick事件。要使其可见,您可以使用onTouchEvent:

@Override
    public boolean onTouchEvent(MotionEvent event) {
        // TODO Auto-generated method stub
        view.setVisibility(View.VISIBLE);
        return super.onTouchEvent(event);
    }

view.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            if(view.getVisibility()==View.VISIBLE)
            {
                Log.d("visibility test", "Visible");
                view.setVisibility(View.INVISIBLE);
            }
         /*   else
            {
                Log.d("visibility test", "inVisible");
                view.setVisibility(View.VISIBLE);
            }
        } */
    });