2012-02-21 5 views
2

私のアプリはライトテーマを使用しますが、Intent.createChooser()で作成されたダイアログは常に暗いです。私はTheme.LightTheme.Holo.Lightを試してみましたが、それだけでは動作しませんintent.createChooserは常にダークダイアログを表示します

public class AsdActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Intent intent = new Intent(Intent.ACTION_SEND); 
     intent.setType("text/plain"); 
     intent.putExtra(Intent.EXTRA_SUBJECT, new String[]{"abc"}); 
     intent.putExtra(Intent.EXTRA_TEXT, "blah"); 

     startActivity(Intent.createChooser(intent, "aaa"));   
    } 
} 

: 私は、ダイアログを表示するテストアプリを書きました。

セレクタにライトテーマを使用させるにはどうすればよいですか?

答えて

1

あなたのアプリではなく、システムに属しているため、セレクタの色を制御できないと思われます。しかし、自分のテーマに沿ったAlertDialogで独自のセレクタを実装できない理由はありません。ダイアログを作成するために使用できるリストを取得するコードスニペットを次に示します。

PackageManager packageManager = getPackageManager(); 

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType("text/plain"); 
intent.putExtra(Intent.EXTRA_SUBJECT, new String[] { "abc" }); 
intent.putExtra(Intent.EXTRA_TEXT, "blah"); 

List<ResolveInfo> list = packageManager 
    .queryIntentActivities(intent, 0); 

if (list.size() > 0) { 
    StringBuilder outStr = new StringBuilder("Available receivers:"); 
    for (ResolveInfo resolveInfo : list) { 
     outStr.append("\n"); 
     outStr.append(resolveInfo.loadLabel(packageManager)); 
    } 
    tv.setText(outStr); 
} else { 
    tv.setText("No available receivers!"); 
} 
0

Contextを使用するIntentコンストラクタを使用しようとしましたか?それは、ダイアログにテーマを渡す方法です。

+0

私はこれについて既に考えていました。ダイアログを作成するときに間違ったコンテキストを使用すると、ダイアログも黒くなります。しかし、この場合、それは解決策ではありません。コンテキストを使用するコンストラクタが特定のクラスを狙っているからです。 –

関連する問題