0

この質問は何度も聞かれるようですが、20 を超えるさまざまなアイデアを試した後でも、まだ問題があります。

(上から)7つのスピナーとそれに続くいくつかの編集テキストで構成される膨張したダイアログがあります。スピナーと編集テキストは別々の線形レイアウトにあります。

ダイアログが作成されると、フォーカスが最初の編集テキストに移動し、これがダイアログの途中にあるため、最初のスピナーがスクロールされて表示されなくなります。

私が必要とするのは、最初のスピナーをフォーカスするか、スクロールを一番上にする方法です。

私が何をした?

さて、設定しました:dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

ソフトキーボードが表示されないようにします(これは機能します)

manufacturer = (Spinner) entryView.findViewById(R.id.myyarns_add_dialog_manufacturer_spinner);
manufacturer.setFocusable(true); 
manufacturer.setFocusableInTouchMode(true);
manufacturer.requestFocus();

これは onPrepareDialog でも onCreateDialog でも効果がありません

それでは設定してみました

weight = (EditText) entryView.findViewById(R.id.myyarns_add_dialog_weight); 
weight.clearFocus();

ここで、weight はフォーカスを取得する最初の edittext の ID です - それでも weight はフォーカスを取得します

次に、ダイアログビューを一番上までスクロールしようとしましたが、何もしません

ScrollView scroller = (ScrollView) entryView.findViewById(R.id.myyarns_scroll);
scroller.scrollTo(0, 0);

他にできることはありますか?

4

1 に答える 1

0

xml セット内のすべての editText についてandroid:focusable="false"

初めてのスピナーセットにandroid:focusable="true"

また

必要なフィールドにプログラムでフォーカスを設定する

于 2013-01-25T12:14:40.677 に答える