2012-11-14 109 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其实,这是我的问题。谢谢! –