4

カスタムスタイルでAndroidでダイアログを作成しています:

new AlertDialog.Builder(new ContextThemeWrapper(context, R.style.CustomAlertDialog))
    .setSingleChoiceItems(keys, selectedIndex,
        new DialogInterface.OnClickListener(){
          @Override
          public void onClick(DialogInterface dialog, int index) {
            // ...
            dialog.dismiss();
          }
        })
    .create()
    .show();

次のようになりCustomAlertDialogます。

<style name="CustomAlertDialog" parent="@android:style/Theme.Dialog">

  <!--
  <item name="android:typeface">monospace</item>
  <item name="android:textSize">30sp</item>
  -->
</style>

typefaceこれは正常に機能します ( andのコメントを外すとtextSize、変更が表示されます)。ただし、現在選択されているアイテムの水色を別のものに変更したいと思います。

ここに画像の説明を入力

これは私のを通して可能CustomAlertDialogですか?もしそうなら、どのように?

4

3 に答える 3

5

ここに簡単な回答があります。後で API レベル 8+ に関して改善する可能性があります。

http://i.imgur.com/ZDVV1WY.png

API レベル 11 以降の場合

彼らが追加alertDialogThemeして機能するのは簡単textColorAlertDialogListItemです:

new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.CustomAlertDialog))
  .setSingleChoiceItems(new String[] {"One", "Two", "Three", "Four"}, 2,
    new DialogInterface.OnClickListener(){
      @Override
      public void onClick(DialogInterface dialog, int index) {
        // ...
        dialog.dismiss();
      }
    })
  .create()
  .show();

styles.xml

<style name="CustomAlertDialog">
  <item name="android:alertDialogTheme">@style/CustomAlertDialogTheme</item>
</style>

<style name="CustomAlertDialogTheme">
  <item name="android:textColorAlertDialogListItem">@color/some_colors</item>
</style>

some_colors.xml

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_checked="true" android:color="@color/my_dialog_checked"/>
  <item android:color="@color/my_dialog_default"/> <!-- default -->
</selector>

API レベル 8 以上の場合

前に述べたように、「最も安全な」方法は独自のアイテム レイアウトを実装することだと思います。アイテムの外観を完全に制御できるためです。これは主に、古いバージョンのプラットフォームでは、それらのレイアウトに「ハード コーディングされた」色とスタイルがあったためです。 .

せずにプレイして直接Builder使用することもできますがAlertDialog/Dialog(Context context, int theme)、この時点では時間が少し足りないので、今はこれに多くの時間を投資したくありませんでした.

于 2013-07-23T20:47:06.957 に答える
0
 <item android:state_checked="true" android:drawable="@color/checkbox_active" />

押されたラジオボタンを処理する必要があります。

于 2013-07-09T14:50:10.957 に答える
0

私はこれを試したことはありません。これは Theme.Holo docs に存在するようで、Theme.Dialog にある可能性がありますが、これを追加してみてください。

<item name="colorPressedHighlight">@color/yourcolour</item>
<item name="colorLongPressedHighlight">@color/yourcolour2</item>
于 2013-07-20T18:30:35.143 に答える