Диалоговое окно с предупреждением о проблеме с Android 2.3

У меня проблема с диалоговыми окнами предупреждений, вот мой код:

new AlertDialog.Builder(GestureShortcutsMainActivity.this)

.setTitle("Disclaimer")
.setIcon(R.drawable.alert_icon)
.setMessage(R.string.disclaimer)
.setPositiveButton("I Accept", 
new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {


                            }
                        })
.setCancelable(false)
.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){

public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
finish();
}
})
.show();

Вот как это выглядит в android 4.0.4:

диалоговое окно предупреждения 4.0.4

Вот как это выглядит в android 2.3.1:

диалоговое окно предупреждения 2.3.1

Как сделать так, чтобы он отображался правильно в обеих версиях?




Ответы (2)


Ваша тема недоступна в Android 2.3. (Пример: Android 2.3 не включает Theme_Holo)

public void setThemeForAPIVersion()
{
    if((Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB))
    {
        setTheme(android.R.style.Theme_Holo);
    }
    else
    {
        setTheme(android.R.style.Theme_NoTitleBar);
    }
}

и в onCreate вашего вызова активности

        setThemeForAPIVersion(); 
person ibrahimyilmaz    schedule 01.04.2014
comment
На самом деле это была моя проблема. Спасибо! - person Marcelo Noguti; 16.10.2014

Я рекомендую вам поместить сообщение внутри вертикальной полосы прокрутки. В этом вопросе показан пример. Сделайте так, чтобы код XML выглядел так (это неполно ...)

<ScrollView android:id="scrollDialog">
    <LinearLayout android:orientation="vertical"
            android:scrollbars="vertical"
            android:scrollbarAlwaysDrawVerticalTrack="true">
        <TextView android:id="text" />
        <Button />
    </LinearLayout>
</ScrollView>

Затем в своем коде найдите TextView и установите AlertDialog для использования этого макета.

AlertDialog.Builder builder=new AlertDialog.Builder(this);
LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout;
layout = inflater.inflate(R.layout.scrollDialog,null);
TextView text=(TextView) findViewById(R.id.text);
text.setText(R.string.disclaimer);
setContentView(layout);
person PearsonArtPhoto    schedule 14.11.2012