0

我想在我的应用程序中实现搜索视图,当用户单击设备搜索数据上的搜索按钮时。但我不知道如何将 ID 设置为默认搜索编辑文本以及如何获取该 ID。我知道通过 findviewbyid 获取编辑文本的 ID,但我不知道该编辑文本的 ID

4

3 回答 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 回答