2011-01-04 4 views
0

デフォルトのalertDialogボックスに表示されているアイコンを動的に設定する方法はありますか?たとえば、私は、次のalertDialog、setIcon()メソッドを使用して、uri変数に内部に格納されたパスを使用して提供するイメージを表示します。デフォルトのalertDialogsでsetIcon()を動的に使用しますか?

private void showProductInfo(){ 
    MyProduct myProduct= (MyProduct) myProductGoldenRetriever(); 
    final AlertDialog alertDialog = new AlertDialog.Builder(this).create(); 
    alertDialog.setTitle("Product Information"); 
    alertDialog.setMessage(myProduct.getMyProductInfo()); 
    alertDialog.setButton("Back", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      showPrompt(); 
     } 
    }); 
    alertDialog.setIcon(R.drawable.default_img);//<--Here Need to Provide a different image each time 
    alertDialog.show(); 
}//endOfShowProductInfo 

これは何とか可能ですか、適切な.xmlレイアウトファイルを使用してカスタムalertDialogを作成する必要がありますか?

答えて

2

あなたが正しく理解していれば、アイコンをUriから作成された図面に設定したいだけですか?私はMyProductgetUri()メソッドがあると仮定します。ない場合は、単にそれに応じて変更します。

Resources res = getResources(); 
BitmapDrawable icon = new BitmapDrawable(res, myProduct.getUri().toString()); 
alertDialog.setIcon(icon); 

BitmapDrawableクラスは、リソースやファイルパスを表す文字列で受け取るコンストラクタを持っています。 Uriを使用している場合は、toString()を使用して変換することができます。 AlertDialog.Builderクラスには、Drawableを取り込むオーバーロードされたsetIcon()メソッドがあります。パスからドロアブルを作成し、それをダイアログアイコンとして設定します。これはテストされていません(ここではEclipseはありません)。

+0

あなたは正しく理解しましたが、あなたの提案は非常に有望です。しかし、私はそれを修正することができなかったさまざまな方法でそれを試してみました。例えば、私はBitmapDrawableアイコン=新しいBitmapDrawble(res、 "R.drawable.default_img")を試した。私のdrawableディレクトリのimgのために。次に、「/Users/Admin/Desktop/default_img.png」のような画像へのフルパスを試しました。/ – nifo

+0

あなたのファイルがすでにドロウアブルフォルダにある場合は、default_imgを目的のアイコンに変更してください。そしてMyProductクラスでは、setUriとgetUriの代わりに、intを使用してリソースIDを格納します。 setResourceId(R.drawable.image1)。それから 'setIcon(myProduct.getResourceId())';を使います。 2番目の例では、PCから画像を取得しようとしています。あなたはこれをすることはできません。とにかくフルパスではないので、フルパスはC:/Users/Admin/Desktop/default_img.pngのようになります。 – kcoppock

+0

あなたが今述べた戦術に固執します。私の2番目の例に関しては、私はMacを使用しています:)あなたの時間とあなたの興味のために大変ありがとう。 – nifo

関連する問題