2010-12-08 3 views
4

Есть ли способ установить значок в пользовательском диалоге без использования методов AlertDialog? Диалог имеет название, но отсутствует тот приятный делитель и возможность установить значок, но, безусловно, должен быть способ получить оба без использования AlertDialog?Иконки в пользовательских диалоговом окне android

ответ

19

Вы можете добавить значок со следующим кодом:

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

Для делителя вы можете просто добавить ImageView в диалоговом макете:

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

Gubbei, который, похоже, не работает. Я получаю 01-24 04: 46: 24.037: ERROR/AndroidRuntime (1693): android.util.AndroidRuntim eException: requestFeature() необходимо вызвать перед добавлением содержимого – Maxrunner 2011-01-24 15:01:44

1

Хороший способ добавления делителя используя форму градиента.

Просто сделать файл gradient.xml или так, в вашем res/drawable/ каталог и поставить что-то вроде этого в него:

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

Тогда он красит хороший градиентный разделитель :)

Смежные вопросы