EditText 요소를 내 ActionBar에 안드로이드 프로그램에 추가했습니다. 아이콘을 클릭하면 EditText 요소가 나타나며 Enter 키를 누르면 데이터가 입력되고 캡처됩니다. 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"
/>
내 글고 레이아웃입니다.
그리고 아래에있는 내의 onCreateOptionsMenu 논리입니다
<?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"
/>
.
@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;
}
});
}
내 대답이 정확하다고 생각되면 올바른 대답으로 받아 들여주세요. 고맙습니다. –