2

编辑〜找到解决方案并在下面的回复中(现在的最后回复),但直到两天后我才能将其标记为问题的答案。同时,我会在此处保留此编辑,直到我可以将其标记为正确为止。

调用对话框的位置:

public OnClickListener fieldListener = new OnClickListener() {
    public void onClick(View v) {
        FragmentManager fm = getSupportFragmentManager();
        switch (v.getId()) {
        case (0) :

        ChooseDialog ageDialog = new ChooseDialog("Age", ageEditText, act);
        ageDialog.show(fm, "fragment_edit_name");

对话框:

public class ChooseDialog extends DialogFragment implements DialogInterface.OnClickListener, OnMultiChoiceClickListener {

public Dialog onCreateDialog(Bundle savedInstanceState) {
        LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View dialogLayout = inflater.inflate(R.layout.dialog, null);

        AlertDialog.Builder builder;
        switch (editText.getId()) {
        case (0) :
            ListView list = (ListView) dialogLayout.findViewById(R.id.listView1);
        list.setAdapter(new ArrayAdapter<String>(activity, R.layout.dialoglist, 
                activity.getResources().getStringArray(R.array.ageArray)));
        list.setBackgroundColor(00000000);
        builder = new AlertDialog.Builder(activity);
        builder.setTitle(type);
        builder.setNegativeButton("Cancel", this);
        builder.setView(dialogLayout);
        /* builder.setAdapter(new ArrayAdapter<String>(activity, R.layout.dialoglist, 
                    activity.getResources().getStringArray(R.array.ageArray)), 
                    new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    editText.setText(activity.getResources().getStringArray(R.array.ageArray)[which]);
                }} 
                );*/
        return builder.create();

对话框.xml:

<?xml version="1.0" encoding="UTF-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/listView1"
    android:background="#00000000"
    android:cacheColorHint="#00000000"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
</ListView>

DialogList.xml(只是适配器的文本视图):

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_vertical"
    android:minHeight="?android:attr/listPreferredItemHeight"
    android:paddingLeft="6dip"
    android:textColor="@color/androidBlue"
    android:paddingRight="10dip"
    android:layout_weight="1"
    android:textAppearance="?android:attr/textAppearanceLarge" />

在此处输入图像描述

4

3 回答 3

2

尝试

list.setBackgroundColor(Color.TRANSPARENT);

编辑:

在浏览几期 ICS 时,我遇到了这个问题,我认为这可能是 ICS 的问题。认为这个问题与问题无关,但它表明开发人员在设置背景时遇到了问题。

随时欢迎指正。

于 2012-06-05T17:37:33.433 回答
2

我的解决方案:更改 AlertDialog.Builder 构造函数以使用带有 Context, Theme 的构造函数:

builder = (Integer.parseInt(android.os.Build.VERSION.SDK) < 11)? new AlertDialog.Builder(activity) : 
        new AlertDialog.Builder(activity, android.R.style.Theme_Translucent);

这确保它在 Ginger 上加载透明(通过 XML 中的透明行);和半透明的 ICS。主要问题是对话框正面和负面按钮与我的 UI 不匹配。在接下来的几天里,我将在那里开发一个解决方案。

另一个问题是使用builder.setMultiChoiceItems(), null, this);而不是列表。这使得它在整个对话区域具有全白色背景。我也希望在这里发现一个主题方法,但除此之外,我所有的对话框看起来都是我现在想要的方式:P

在这里找到的解决方案:https ://stackoverflow.com/a/8687164/1231943

于 2012-06-05T20:45:12.827 回答
1

对于 XML:

android:background="@android:color/transparent"
android:cacheColorHint="@android:color/transparent"
于 2012-06-05T18:07:08.193 回答