0

setSelection() を使用してスピナーの値をプログラムで変更したいシナリオがあります。これはうまく機能しますが、スピナーが開いている (展開されている) 場合、スピナーは閉じません。たとえば、setSelection() を呼び出しても、メニューは表示されたままです。

プログラムでスピナーを閉じるにはどうすればよいですか? performClick() を試してみましたが、役に立ちませんでした。


編集: 詳細:

私がこれをやろうとしている理由は、スピナーが実際には選択行ごとに複合レイアウトを使用しているためです。つまり、画像、テキスト、およびボタンを含む線形レイアウトがあります。アイデアは、ボタンが「編集」ボタン(アクティビティを開く)として機能し、画像/テキストを押しながら(通常どおり)行を選択するというものでした。

ボタンを追加したときに問題が発生しました。突然、画像とテキストがプレスイベントをキャプチャしてコンボを変更しなくなりました。つまり、行にボタンを追加すると、行全体のタッチ処理能力が失われます。そのため、画像/テキストのクリックハンドラーを手動で実装しようとしましたが、その後setSelectionを実行しました...これがこの問題に遭遇した場所です。

4

1 に答える 1

1

ボタンを追加した後、行全体のクリックハンドルが失われたと言います。これを行レイアウトに追加しandroid:descendantFocusability="blocksDescendants"て、クリックが正しく機能するかどうかを確認してください。

于 2012-10-01T16:41:18.350 に答える