2

編集〜解決策が見つかり、以下の私の回答(今のところ最後の回答)にありますが、今から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

私の解決策: 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

于 2012-06-05T20:45:12.827 に答える
2

試す

list.setBackgroundColor(Color.TRANSPARENT);

編集:

ICS のいくつかの問題を閲覧しているときに、これに遭遇しました。私の意見では、これは ICS の問題である可能性があります。この問題は質問とは関係ないと思いましたが、開発者が背景の設定に問題があることを示しています。

修正はいつでも大歓迎です。

于 2012-06-05T17:37:33.433 に答える
1

XML の場合:

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