さまざまなパラメーターを設定するために使用される 20 ~ 25 の同様の行を含む XML レイアウトがあります。行には と が含まれAutoCompleteTextView
ますImageButton
。これらのビューのいずれかでオプションが設定されるたびに、コードで変数を設定するメソッドが呼び出され、すべてのビューが更新されます。各変数を設定する方法は 3 つあります... AutoCompleteTextView:
OnKeyListener、OnItemSelectedListener.... ImageButton:
OnClickListener
行の 1 つのこの部分の例を次に示します。
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();
}
});
私の問題は、これらの項目のいずれかが設定された後、画面上部のテキスト フィールドが自動的にフォーカスされ、そのビューのドロップダウン メニューが表示されることです。それは非常に迷惑です。どのビューでもアイテムを選択したいのですが、これらのドロップダウンは表示されません。
私は2つのことを試しました:
1) AutoCompleteTextView.setCursorVisible( false ); を追加しました。
2)そして私もこれを試しました:
specialCTAutoText.setFocusable( false );
specialCTAutoText.setFocusableInTouchMode( false );
specialCTAutoText.setText( temp );
specialCTAutoText.setFocusable( true );
specialCTAutoText.setFocusableInTouchMode( true );
2 番目に試したのは、ここには示していない 2 番目の方法ですべてのビューが更新されたときに呼び出されます。これはうまくいきます。ただし、これら 3 つの方法のいずれかで textview を編集すると、一番上の edittext ビューが自動的に選択されます。
これが十分に明確であることを願っていますが、明確化が必要な場合はお知らせください。