2012-11-14 142 views
0

我有警報對話框繼承人我的代碼有問題:警報對話框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(); 

這是它看起來像安卓4.0.4:

alert dialog 4.0.4

這是什麼它看起來像在android 2.3.1:

alert dialog 2.3.1

如何使它在兩個版本上都能正確顯示?

回答

0

我建議你把消息放在一個垂直滾動條內。 This question顯示了一個例子。在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); 
1

您的主題沒有在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); 
    } 
} 

,並在您的活動電話

 setThemeForAPIVersion(); 
+0

的的onCreate其實,這是我的問題。謝謝! –