Оповещение диалога 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:
Вот как это выглядит в Android 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();
Я рекомендую поместить сообщение внутри вертикальной полосы прокрутки. Этот вопрос показывает пример. Пусть 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);