可见性功能不适用于文本视图

时间:2014-07-24 07:38:03

标签: android textview

我所拥有的是两个文本视图,我想要做的是当其中一个被选中或聚焦时,我希望另一个被隐藏或禁用,我尝试了很多方法,但没有一个有效,我不知道为什么!这是我的xml代码:

 <RelativeLayout
                android:id="@+id/relative2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentRight="true"
                android:layout_below="@+id/relative1"
                android:background="@drawable/down"
                 android:focusableInTouchMode="true"
                 android:focusable="true" >

   <AutoCompleteTextView android:id="@+id/txtsearch"
                           android:layout_width="fill_parent"
                           android:layout_height="wrap_content"
                          />
  <AutoCompleteTextView android:id="@+id/txtsearch2"
                            android:layout_width="fill_parent"
                            android:layout_height="wrap_content" />

这是我的java代码:

  if(textView.isFocused()==true){// txtsearch
                            textView2.setVisibility(View.INVISIBLE);//txtsearch2
                            active=1;
                        }else {
                            textView2.setVisibility(View.VISIBLE);
                            active=2;
                        }

我也试过isSelected并且它没有用,有人可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

将onFocusChangeListener添加到textViews,

tv1.setOnFocusChangeListener(new View.onFocusChangeListener(){

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            // TODO Auto-generated method stub
            if(hasFocus){
                tv2.setVisibility(View.GONE);
            }
        }
    });
tv2.setOnFocusChangeListener(new View.onFocusChangeListener(){

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            // TODO Auto-generated method stub
            if(hasFocus){
               tv1.setVisibility(View.GONE);
            }
        }
    });

tv1和tv2是你的textViews。

答案 1 :(得分:0)

首先,您可以简化条件逻辑。无需将isFocused()的结果与 true 进行比较。你可以写if(textView.isFocused()){...}

但是你仍然必须使用监听器,所以每当一个TextView获得焦点时,另一个将改变其可见性。这是一个例子:

        textView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View view, boolean hasFocus) {
                if (hasFocus) {
                    textView2.setVisibility(View.INVISIBLE);
                }
            }
        });

        textView2.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View view, boolean hasFocus) {
                if (hasFocus) {
                    textView.setVisibility(View.INVISIBLE);
                }
            }
        });

如果你更需要一个onClickListener(我相信你这样做),这里有一个示例:

        textView.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                textView2.setVisibility(View.INVISIBLE);
            }
        });

答案 2 :(得分:0)

要对焦点视图做出反应,请使用FocusChangeListener http://developer.android.com/reference/android/view/View.OnFocusChangeListener.html