2010-12-08 11 views
4

AlertDialogメソッドを使用せずにカスタムダイアログにアイコンを設定する方法はありますか? Dialogにはtitleがありますが、nice dividerとiconを設定する機能がありませんが、必ずAlertDialogを使わなくても両方を取得する方法が必要ですか?カスタムダイアログのアイコンandroid

答えて

19

次のコードでアイコンを追加することができます

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <ImageView 
     android:src="@android:drawable/divider_horizontal_dim_dark" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <TextView 
     android:text="content" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 
+0

私は01-24 04:46:24.037:ERROR/AndroidRuntime(1693):android.util.AndroidRuntim eException:コンテンツを追加する前にrequestFeature()を呼び出さなければならない – Maxrunner

+1

** 'setContentView()'の前に 'requestWindowFeature()' **を呼び出しましたか? – Gubbel

+0

ありがとうGubbel、私のためにうまく動作します。注意: 'show()'の後にDrawableを設定する必要はありません。通常は 'onCreateDialog()'で作成され、 'show()'は別の場所で呼び出されます。 – Ridcully

1

分圧器を追加する良い方法がある:あなたは、単にあなたのダイアログのレイアウトにImageViewを追加することができます分周器の

Dialog dialog = new Dialog(context); 

dialog.requestWindowFeature(Window.FEATURE_LEFT_ICON); 
dialog.setContentView(R.layout.custom_dialog); 
dialog.setTitle("Dialog Title"); 

dialog.show(); 
dialog.setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, R.drawable.your_icon); 

グラジエント形状を使用して

単にあなたのres/drawable/カタログに、ファイルgradient.xmlかそこらを作り、その中にこのようなものを置く:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle"> 

<gradient android:startColor="#424542" 
      android:centerColor="#FFFFFF" 
      android:endColor="#424542" 
      android:angle="0" /> 
</shape> 

そしてあなたのLinearLayout内のビューを置くことができます。

<View android:id="@+id/divider" 
     android:layout_width="fill_parent" 
     android:layout_height="1dip" 
     android:background="@drawable/gradient"> 
</View> 

その後それは素晴らしい勾配の仕切りを塗る:)

関連する問題