web-dev-qa-db-ja.com

Make Androidアクティビティはダイアログのように見えます

ウィジェットのクリックでダイアログを開こうとしています。クリックで開始されたアクティビティのスキニングの問題をAndroid:theme="@Android:style/Theme.Dialog"で解決しました。残念ながら、同じダイアログの外観に到達することはできません。

これが結果です:

ウィジェットからのダイアログ

代わりに、この結果に到達したいと思います(もちろん、ボタンを除く)。

ウィジェットからの必要なダイアログ

(画面を押したままにして表示されるウィジェットダイアログ)

ご覧のとおり、リストアイテムの色、テキストの色、リストアイテムの区切り文字など、いくつかの違いがあります。標準のダイアログと同じ外観を得るための事前定義されたテーマ/スタイルはありますか?そうでない場合、その結果に到達するために従うべきステップは何ですか?

FoxyRingが提供するウィジェットには、私が望む動作があることを確認しました。

17
Matroska

透明な背景レイアウトで「従来の」メインアクティビティを使用してみませんか

それから標準ダイアログを呼び出しますか?

...まあ、私があなたを正しく理解していれば、それは非常に簡単な方法でトリックを作るでしょうね?

22
Hubert

次のようなダイアログを動的に作成できます。

_        Context mContext = this;
        Dialog dialog = new Dialog(mContext);

        dialog.setContentView(R.layout.data_dialog);
        dialog.setTitle("Your title");

        AlertDialog.Builder builder;
        AlertDialog alertDialog;

        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
        View layout = inflater.inflate(R.layout.data_dialog,
                (ViewGroup) findViewById(R.id.AbsoluteLayout01));

        builder = new AlertDialog.Builder(mContext);
        builder.setView(layout);
        alertDialog = builder.create();
        alertDialog.show();

        final EditText txtUsername = (EditText) layout.findViewById(R.id.txtUsername);

        final AlertDialog thisDialog = alertDialog;

         Button btnSave = (Button) layout.findViewById(R.id.btnSave);
         btnSave.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {

                String strtxtUsername = txtUsername.getText().toString();

                //do something...

             }
         });                
_

ダイアログを閉じるには、thisDialog.dismiss();を呼び出します

スタイルは通常のTheme.Light.NoTitleBarのように見え、アイコンとタイトルテキストのあるリストビューがあります。

お役に立てば幸いです。

3
Nick

実際、これを行うには、以下で提案するよりもはるかに簡単な方法があります。
以下をご覧ください: https://developer.Android.com/guide/topics/ui/dialogs.html 「リストの追加」という見出しの下。

0
Nick