4

searchable.xmlのAndroidプロジェクトでは、テキストが書かれていないときに編集テキストに表示されるヒントを指定できます。これを動的に設定する方法はありますか?

私のアクションではstartSearch、独自のパラメーターを渡して呼び出している 2 つの検索ボタンがあります。どのボタンがクリックされたかに基づいて、選択したアクションを反映するヒントを設定したいと思います-「映画のタイトルを検索」、「俳優を検索」など。

startSearch私の見方では、パラメータをに渡すか、ローカライゼーション アプローチを使用することでこれを達成できる可能性があります。これはvalues-fr\strings.xml、 に 1 つのヒントを配置できるのと同じように、別のボタンがクリックされたときに対象とする代替の検索リソース ファイルが存在する可能性があります。またはsearchable.xml、をセレクターにして、さまざまな状態で異なる動作をさせることができれば、それも問題ありません...問題は、これらのいずれかを達成する手段を見つけることができなかったことです。

これを実行したい本当の理由は、デバイス検索ボタンが押されたときのデフォルトのアクションが最初のオプションであるタイトル検索であることを伝えるための最良の方法だからです。

アップデート

混乱を避けるために、EditText のヒントを変更する宣言的またはmSearchTextFieldプログラム的なアプローチに満足していSearchDialogます。私が不明なのは、その EditText を参照する方法です。リンク先のコードのコメントには、「これはまだ SearchManager によって制御されています ...」と書かれていますが、SearchManager から制御する方法についての参照も見つかりません。

4

4 に答える 4

1

AndroidのXMLは、ダイナミズムにはあまり適していません。おそらく、アクティビティのコードでこの問題を修正する必要があります。

を使用してEditTextのヒントを変更することにより、コードでこれを行うことができますsetHint()。次に、ボタン(または場合によってはスピナー)に何らかのリスナーが必要です。ボタンの場合は、setOnClickListener();を使用します。スピナーのsetOnItemSelectedListener()方が適切でしょう。

于 2010-02-24T06:11:27.413 に答える
0

ランタイム中にアクティビティにメタデータを追加できますか? 可能であれば、検索用に別の xml ファイルを割り当てることができます。

于 2012-06-25T18:17:29.930 に答える
0

あなたの startSearch がどのように見えるかはわかりませんが、このようなものがあなたが探しているものです:

private void startSearch(CharSequence hint) {
    EditText searchBox = (EditText)findViewById(R.id.my_edit_text);
    searchBox.setHint(hint);
于 2010-03-10T22:44:40.770 に答える