我想在我的应用程序中实现搜索视图,当用户单击设备搜索数据上的搜索按钮时。但我不知道如何将 ID 设置为默认搜索编辑文本以及如何获取该 ID。我知道通过 findviewbyid 获取编辑文本的 ID,但我不知道该编辑文本的 ID
问问题
326 次
3 回答
1
有两种方法可以做你想做的事:-
1. 通过 android 默认方式使用以下 url:-
android 搜索设置
android 搜索对话框
2. 在操作栏中使用自定义视图作为搜索视图(所以你可以从任何活动或片段中搜索):-
在您的应用程序 menu.xml 文件中添加一个菜单
<item
android:id="@+id/search"
android:actionLayout="@layout/actionbarsearchlayout"
android:icon="@drawable/ic_action_search"
android:orderInCategory="1"
android:showAsAction="collapseActionView|ifRoom"
android:title="Search"/>
以下是actionbarsearchlayout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent" >
<EditText
android:id="@+id/searchTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:hint="@string/search_hint"
android:imeActionLabel="search"
android:imeOptions="actionSearch"
android:singleLine="true"
android:textColorHint="#C0C0C0" />
</RelativeLayout>
在膨胀选项菜单的位置执行以下操作。OnOptionitemSelected() 内部
case R.id.search:
View view = item.getActionView();
final EditText search = (EditText) view
.findViewById(R.id.searchTitle);
search.setText("");
search.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
boolean handled = false;
if (event != null) {
if (event.getAction() !=
KeyEvent.ACTION_DOWN) {
return handled;
} else if (actionId ==
EditorInfo.IME_ACTION_SEARCH
|| event.getKeyCode() ==
KeyEvent.KEYCODE_ENTER) {
//do whatever you want to search
//with query
handled = true;
InputMethodManager imm =
(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(
search.getWindowToken(), 0);
}
}
return handled;
}
});
于 2013-08-20T07:53:29.800 回答
1
在 xml 文件中添加您的编辑文本,正是您希望它出现的位置,并将可见性设置为“已消失”,并为其设置和 id。前任:
<EditText
android:id="@+id/myID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
当您希望它出现时(我猜当您按下搜索按钮时)将可见性设置为可见。例如:edittext..setVisibility(View.VISIBLE);
现在您的编辑文本可见,用户可以添加输入。使用 getText().toString() 获取输入,当您希望它消失时,将可见性设置回消失。
于 2013-08-20T07:41:48.600 回答
-1
请试试这个:
public void onClick(View view) {
switch (view.getId()) {
case R.id.your_needed_view:
// your actions
break;}}
然后使用setOnClickListener()
于 2013-08-20T07:35:48.983 回答