среда, 4 мая 2011 г.

Как отобразить диалог произвольной формы в приложении Android.

Иногда необходимо использовать более сложные диалоги, хотя если диалоги сложные лучше использовать Activity.

Для начала необходимо обдумаем разметку нашего диалога с необходимыми элементами. В данном примере присутствуют: две кнопке текст в панеле с прокруткой и рисунок.

Основные этапы:

  • Определить разметку.
  • Определить диалог.
  • Заполнить диалог данными, присоединить события.
  • Запустить.



<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" android:layout_height="wrap_content">
    <ImageView android:id="@+id/ImageView01"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
           android:layout_centerHorizontal="true" />
    <ScrollView android:id="@+id/ScrollView01"
        android:layout_width="wrap_content" android:layout_below="@+id/ImageView01"
           android:layout_height="200px">
        
        <TextView 
            android:text="@+id/TextView01" android:id="@+id/TextView01"
               android:layout_width="wrap_content" android:layout_height="wrap_content" />
    </ScrollView>
    <Button 
        android:id="@+id/Button01" 
        android:layout_below="@id/ScrollView01"
           android:layout_width="wrap_content" android:layout_height="wrap_content"
           android:layout_centerHorizontal="true" android:text="Cancel" />
</RelativeLayout>


public void ShowDialog(Context context) {
        //Инициализируем диалог.
        Dialog dialog = new Dialog(context);
        //Указываем разметку, описанная выше.
        dialog.setContentView(R.layout.teacher_widget_spinner);
        //Устанавливаем заголовок
        dialog.setTitle("This is my custom dialog box");
        //С кнопкой Cancel
        dialog.setCancelable(true);
        //Заполняем сам диалог нашими данными.
        //Устанавливаем текст.    
        TextView text = (TextView) dialog.findViewById(R.id.TextView01);
        text.setText(R.string.lots_of_text);
        //Устанавливаем изображение
        ImageView img = (ImageView) dialog.findViewById(R.id.ImageView01);
        img.setImageResource(R.drawable.icon);
        //Устанавливаем обработчик событий кнопки.
        Button button = (Button) dialog.findViewById(R.id.Button01);
        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
               finish();
            }
        });
        //Всё готово, запускаем диалог.
        dialog.show();
    }

Комментариев нет:

Отправить комментарий