为什么我的ListView / Dialog不透明?

时间:2012-06-05 17:34:34

标签: android android-listview android-fragments android-alertdialog

编辑〜解决方案已找到并在我的回复中(现在的最后一个回复)但我不能将它标记为问题的答案,直到两天后。在此期间,我将在此处保留此编辑,直到我能够将其标记为正确。

调用对话框的位置:

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();

Dialog.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(只是适配器的textview):

<?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" />

enter image description here

3 个答案:

答案 0 :(得分:2)

尝试

list.setBackgroundColor(Color.TRANSPARENT);

修改

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

随时欢迎更正。

答案 1 :(得分:2)

我的解决方案:更改AlertDialog.Builder构造函数以使用上下文,主题:

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

答案 2 :(得分:1)

和XML:

android:background="@android:color/transparent"
android:cacheColorHint="@android:color/transparent"