Android プログラムの ActionBar に EditText 要素を追加しました。アイコンをクリックすると、EditText 要素が表示され、リターン キーまたはエンター キーが押されると、データが入力およびキャプチャされます。EditText 要素を非表示にしてアイコンを再表示するにはどうすればよいですか? 現在、EditText フィールドは ActionBar に残り、アイコンは非表示になっています。以下は私のメニューxmlファイルです。どんな助けでも大歓迎です。
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
<item
android:id="@+id/herbsearch"
android:title="HerbSearch"
android:showAsAction="always"
android:icon="@android:drawable/ic_menu_search"
/>
<item
android:id="@+id/locationchange"
android:title="Change Location"
android:showAsAction="ifRoom|collapseActionView"
android:icon="@drawable/ic_launcher"
android:actionLayout="@layout/search_layout"
/>
そして、これが私の EditText レイアウトです。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<EditText
android:id="@+id/txt_search"
android:inputType="text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:textColor="#000000"
android:textSize="15sp"
android:singleLine="true"
android:hint="Enter new location"
android:imeOptions="actionDone"
/>
以下は私の onCreateOptionsMenu ロジックです。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
/** Get the action view of the menu item whose id is search */
View v = (View) menu.findItem(R.id.locationchange).getActionView();
/** Get the edit text from the action view */
EditText locSearch = ( EditText ) v.findViewById(R.id.txt_search);
locSearch.requestFocus();
/** Setting an action listener */
locSearch.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
// Toast.makeText(getBaseContext(), "Search : " + v.getText(), Toast.LENGTH_SHORT).show();
GetMap(String.valueOf(v.getText()));
invalidateOptionsMenu();
/** Get the edit text from the action view */
EditText locSearch = ( EditText ) v.findViewById(R.id.txt_search);
// I tried these next 3 instructions with no success
// locSearch.setVisibility(1);
// v.setTextColor(Color.WHITE);
// v.setVisibility(1);
return false;
}
});
}