gpt4 book ai didi

android - 取消聚焦屏幕上的所有 EditText

转载 作者:行者123 更新时间:2023-11-29 21:49:02 25 4
gpt4 key购买 nike

我有一个 XML 布局,其中包含 20-25 个相似的行,用于设置不同的参数。这些行包含一个 AutoCompleteTextView 和一个 ImageButton。每当在其中一个 View 中设置一个选项时,就会调用一个方法来设置我的代码中的变量,然后刷新所有 View 。可以通过三种方式设置每个变量...AutoCompleteTextView: OnKeyListener, OnItemSelectedListener....ImageButton: OnClickListener

这是其中一行的这一部分的示例:

pumpCountAutoText = new AutoCompleteTextView( this );
pumpCountAutoText.setHint( R.string.anti_pump_pump_count_hint );
pumpCountAutoText.setTextSize( 12.0f );
pumpCountAutoText.setLayoutParams( editLP );
pumpCountAutoText.setThreshold( 1 );
pumpCountAutoText.setId( 11001 );
pumpCountAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, pumpCountList);
pumpCountAutoText.setAdapter( pumpCountAdapter );
pumpCountAutoText.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
// if keydown and "enter" is pressed
if ((event.getAction() == KeyEvent.ACTION_DOWN)
&& (keyCode == KeyEvent.KEYCODE_ENTER)) {
String item = pumpCountAutoText.getText().toString();
hideSoftKeyboard( MoreParameters.this );
pumpCountAutoText.dismissDropDown();
if( hasRead ) {
if(pumpCountList.contains( item ) ) {
if( !( item.equals( " " ) ) ) {
int val = Integer.parseInt( item );
//Log.i( "pumpCountSpinner", Integer.toString( val ) );
RelayAPIModel.NativeCalls.SetParmJava( RelayAPIModel.PARM_PUMPCOUNT, val );
}
}
}
return true;
}
return false;
}
});
pumpCountAutoText.setOnItemClickListener( new OnItemClickListener() {

public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
hideSoftKeyboard( MoreParameters.this );
String item = pumpCountAutoText.getText().toString();
if( !( item.equals( " " ) ) ) {
int val = Integer.parseInt( item );
//Log.i( "pumpCountSpinner", Integer.toString( val ) );
RelayAPIModel.NativeCalls.SetParmJava( RelayAPIModel.PARM_PUMPCOUNT, val );
}
}

});


pumpCountDropdownButton = new ImageButton( this );
pumpCountDropdownButton.setLayoutParams( dropLP );
pumpCountDropdownButton.setId( 11002 );
pumpCountDropdownButton.setImageResource( R.drawable.arrow_down_float );
pumpCountDropdownButton.setOnClickListener( new OnClickListener() {

public void onClick(View v) {
// TODO Auto-generated method stub
AlertDialog.Builder ab=new AlertDialog.Builder(MoreParameters.this);
ab.setTitle( R.string.anti_pump_pump_count_hint );
ab.setItems( pumpCountList.toArray( new String[pumpCountList.size()]), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int pos ) {
String item = pumpCountList.get( pos );
if( !( item.equals( " " ) ) ) {
int val = Integer.parseInt( item );
RelayAPIModel.NativeCalls.SetParmJava( RelayAPIModel.PARM_PUMPCOUNT, val );
}
}
});
ab.show();
}

});

我的问题是,在设置任何这些项目后,屏幕顶部的文本字段会自动获得焦点并显示该 View 的下拉菜单。这非常烦人。我想在任何 View 中选择一个项目并且不显示这些下拉菜单。

我试过两件事:

1) 我添加了 AutoCompleteTextView.setCursorVisible( false );

2)我也试过这个:

specialCTAutoText.setFocusable( false );
specialCTAutoText.setFocusableInTouchMode( false );
specialCTAutoText.setText( temp );
specialCTAutoText.setFocusable( true );
specialCTAutoText.setFocusableInTouchMode( true );

我尝试的第二件事是在此处未显示的第二种方法中刷新我的所有 View 时调用的。这很好用。但是,一旦我以这三种方式之一编辑 TextView ,它仍然会自动选择顶部的编辑 TextView 。

我希望这已经足够清楚了,但如有任何需要澄清的地方,请告诉我。

最佳答案

However, once I edit a textview one of those three ways, it still auto selects the top edittext view.

当您“以这三种方式之一编辑 TextView ”时,尝试在其他一些小部件上调用 requestFocus()

关于android - 取消聚焦屏幕上的所有 EditText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14939160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com