我所拥有的是两个文本视图,我想要做的是当其中一个被选中或聚焦时,我希望另一个被隐藏或禁用,我尝试了很多方法,但没有一个有效,我不知道为什么!这是我的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
并且它没有用,有人可以帮助我吗?
答案 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