1

Я ориентирую API уровня 8+. Мне нужен диалог с заголовком, сообщением, флажком с текстом и двумя классическими нижними кнопками. Я пытаюсь использовать стандартный AlertDialog и метод setView добавить флажок:AlertDialog цвет текста и маржа

checkbox.xml метод

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/frame_checkbox" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="10dp" > 

    <CheckBox 
     android:id="@+id/checkbox" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="5dp" 
     android:checked="true" 
     android:textSize="14sp" > 
    </CheckBox> 

</FrameLayout> 

ShowDialog

private void showDialog() { 
    AlertDialog.Builder builder = new AlertDialog.Builder(activity); 

    builder.setTitle("Title"); 
    builder.setMessage("Message"); 

    View checkboxView = View.inflate(activity, R.layout.checkbox, null); 
    CheckBox checkBox = (CheckBox) checkboxView.findViewById(R.id.checkbox); 
    checkBox.setText("Some checkbox text"); 
    builder.setView(checkboxView); 

    // First button 
    builder.setNegativeButton(getString(R.string.not_now), 
      new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 

      }); 

    // Second button 
    builder.setPositiveButton(getString(R.string.help), 
      new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
      }); 

    builder.create(); 
    builder.show(); 
} 

Мои AppBaseTheme имеет родителя «Theme.AppCompat.Light» (/res/values/styles.xml), то же самое для значений-v11 и «Theme.AppCompat.Light.DarkActionBar» для значений-v14. У меня проблема в 2.3.3, флажок и текст не имеют полей или отступов (я их установил в xml), кроме того, текст черный как фон. Все выглядит нормально в 4.4. Я много читал об этой проблеме, но я все еще смущен и без решения. Не могли бы вы мне помочь?

+0

вы можете увидеть мой ответ на тот же вопрос здесь http://stackoverflow.com/a/33377490/3346625 –

ответ

0

Вы можете заставить белый фон вашего диалога с помощью:

if(Build.VERSION.SDK_INT <= 10) { 
    builder.setInverseBackgroundForced(true); 
} 
+0

Этот путь I» ve только мой пользовательский checkbox вид с белым фоном, без поля, весь диалог по-прежнему черный. Во всяком случае, у меня много других диалогов с черным фоном, поэтому я не могу сделать исключение для этого. Я действительно не могу просто применить тот же базовый стиль к пользовательскому виду? – Jumpa