1

我正在尝试显示一个具有列表的 AlertDialog。当我在 Android IC 上运行应用程序时,我没有任何问题,但是当我在 Android 2.3 上尝试它时,AlertDialog 出现一个可怕的边框,它位于视图的上层和下层。我已经尝试过使用主题和很多东西,但我添加的问题是 AlertDialog.Builder(Context, Theme) 在低于 11 的 API 上无效。你知道任何解决方案吗?谢谢!

public boolean updialog (String table) {
    String [] data = bd.List(1, table);
    if(data[0]=="") {
        AlertDialog.Builder dialog = new AlertDialog.Builder(this,android.R.style.Theme_Translucent_NoTitleBar);
        View view = View.inflate(getApplicationContext(), R.layout.drop_no_resquest, null);
        dialog.setView(view); dialog.create();
        dialog.show(); 
        return true;
    }
    AlertDialog.Builder dialog = new AlertDialog.Builder(a);
    View view = View.inflate(getApplicationContext(), R.layout.drop, null);
    ListView lv = (ListView) view.findViewById(R.id.drop_listview);
    ArrayAdapter<String> adap = new ArrayAdapter<String> (getApplicationContext(), 
    R.layout.list_item_custom,R.id.list_item_custom_text,data);
    lv.setAdapter(adap);
    dialog.setView(view);
    dialog.create();
    dialog.show(); return true;
}
4

2 回答 2

0

你可以这样使用

AlertDialog.Builder dialog = new AlertDialog.Builder(this,R.style.ThemeDialogCustom);

在哪里ThemeDialogCustom看起来像这样

 <style name="ThemeDialogCustom">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowBackground">@color/transparent</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
</style>

对于 android < 3.0 ,您需要使用Dialogclass.

Dialog dialog = new Dialog(this, R.style.ThemeDialogCustom);
    View view = View.inflate(getApplicationContext(), R.layout.drop, null);
    ListView lv = (ListView) view.findViewById(R.id.drop_listview);
    ArrayAdapter<String> adap = new ArrayAdapter<String>(
            getApplicationContext(), R.layout.list_item_custom,
            R.id.list_item_custom_text, data);
    lv.setAdapter(adap);
    dialog.setView(view);

    dialog.show();
于 2012-12-02T12:52:21.937 回答
0

您还可以使用 dialog.getwindow () 摆脱背景并访问对话框的窗口属性。我认为您可以使用 setbackground () 并为其设置一个透明的可绘制对象。

于 2012-12-02T13:47:33.570 回答