0

このダイアログを作成しようとしています:

ダイアログ

スピナーがカスタム値に設定されている場合、テキストエディットが自動的に表示されます。私は呼びかけView.setVisible()ていますTextViewが、可視性はすぐには評価されませんが、別の変更を待ちます-たとえば、別の行を追加したり、日付を設定したりします。

コード:

        ...
        customText = (EditText) v.findViewById(R.id.edit_custom_text);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        s.setAdapter(adapter);

        s.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                SpinnerItem si = (SpinnerItem) adapterView.getItemAtPosition(i);
                evt.type = si.eventType;
                if (evt.type == EventType.CUSTOM) {
                    customText.setVisibility(View.VISIBLE);
                } else {
                    customText.setVisibility(View.GONE);
                }
            }


            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
                //do nothing
            }
        });

私はView.invalidate()(親の視点で)View.refreshDrawableState()試しましたが、運がありませんでした:/

編集:上記のコードに到達し(デバッガーによって検証され)、私も試しView.INVISIBLEました。ビューはすぐには更新されませんが、ビューが再度変更された後にのみ更新されます。

4

4 に答える 4

1

たとえば、これを参照してください

    s.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parentView,View selectedItemView, int position, long id) {
    if ("YES".equals(s.getSelectedItem().toString().toUpperCase())) {
    youredittxt.setVisibility(View.VISIBLE);

    } else if ("NO".equals(s.getSelectedItem().toString().toUpperCase())) {
youredittxt.setVisibility(View.INVISIBLE);
}}
    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub
    }
    });
于 2012-05-28T07:51:25.157 に答える
0

それはうまくいくはずです、それはあなたのレイアウトがどういうわけかこの変更を許可/認識しないのでしょうか?

レイアウトxmlファイルに(重要!)を含めて、INVISIBLEの代わりに変更してみてください。GONE

それが何らかの理由で機能する場合は、次のようなものを試してください。

customText.getParent().requestLayout(); //possibly the parent of that etc
于 2012-05-27T20:30:11.240 に答える
0

フォローアップの質問として、あなたはメインUIスレッドにいますか?Androidにはいくつかの機能とポリシーが組み込まれているため、UIを変更できるのは所有しているスレッドのみです。同じスレッドの外にいる場合は、次を試してください。

customText.getHandler().post(new Runnable() {
    public void run() {
        customText.setVisibility(View.VISIBLE);
    }
});

お役に立てれば!:)

于 2012-05-28T09:18:58.107 に答える
-1

実際にコードブロックに到達していることを確認します。

 customText.setVisibility(View.GONE);
于 2012-05-27T20:37:17.120 に答える