Пример кода Android FingerPaint
не использует макет; вместо этого он просто имеет подкласс View
, называемый MyView
, и затем Activity устанавливает его представление содержимого как экземпляр MyView
.
Если вы хотите, чтобы на экране было больше одного View
, вам нужно использовать какой-то макет. Вы можете использовать LinearLayout
, если хотите, чтобы MyView
для рисования был выше, ниже или сбоку кнопок; если вы хотите, чтобы кнопки находились сверху MyView
, посмотрите на использование FrameLayout
или RelativeLayout
.
Затем можно определить макет в XML или создать его вручную в коде. Первый более гибкий и обслуживаемый, но будет несколько икоты.
Сначала создайте макет XML, показывающий, как вы хотите, чтобы ваши компоненты были размещены. Для этого примера мы назовем это finger_paint.xml
. Убедитесь, что у вас где-то есть MyView
, что-то вроде:
<view class="com.example.android.apis.graphics.FingerPaint$MyView"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
Затем замените строку, которая выглядит как
setContentView(new MyView(this));
с
setContentView(R.layout.finger_paint);
Обратите внимание, что поскольку MyView
(пока) не имеет надлежащего конструктора для создания экземпляра LayoutInflater
, это пока не будет работать, поэтому давайте исправим это. Добавьте дополнительный импорт в верхней части файла:
import android.util.AttributeSet;
, а затем добавьте параметр AttributeSet
в конструктор MyView
:
public MyView(Context c, AttributeSet as) {
super(c, as);
// rest of constructor is same as in the sample
}
Вам также придется изменить MyView на static
внутренний класс FingerPaint
.
Вы можете найти документ Создание пользовательских компонентов и образец NotePad полезными, как только вы это выясните.
Удачи!