Проблема с отрисовкой на созданном классе View, занимающем часть Activity.

Ответить
alex-sm
Сообщения: 1
Зарегистрирован: 03 окт 2019, 11:39

Проблема с отрисовкой на созданном классе View, занимающем часть Activity.

Сообщение alex-sm » 03 окт 2019, 12:10

Добрый день.

Буду благодарен за подсказку, т.к. совершенно запутался.

Создаю приложение с тулбаром и под ним игровым полем, на котором будет производиться отрисовка (компоновка как у всем знакомого Сапера).
Следовательно, если я правильно понимаю, компоновка Activity следующая:
Растягиваю на всю Activity LinearLayout (вертикальный), затем на него кладу новый LinearLayout (горизонтальный под тулбар, по ширине растягиваю на весь экран, по высоте - под размер тулбара), а под ним кладу мой новый класс DrawView и растягиваю на всю оставшуюся область.

Вот так:

Код: Выделить всё

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:layout_editor_absoluteX="133dp"
        tools:layout_editor_absoluteY="283dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

   
            <ImageButton
                android:id="@+id/imageButton4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                app:srcCompat="@android:drawable/btn_star_big_on" />
            
            (и так далее)
           
        </LinearLayout>

        <view
            android:id="@+id/DrawView1"
            class="com.example.minesweeper.MainActivity$DrawView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:visibility="visible"
            tools:visibility="visible" />

    </LinearLayout>
Класс DrawView создан и со всеми методами описан в коде.

Теперь, собственно, проблема.

Если приложение стартует с записью в OnCreate() :
setContentView(new DrawView(this)); - все прекрасно отрисовывается, однако в этом случае мой DrawView занимает всю экранную область, и рисуется, видимо, поверх Activity (то есть, никакого тулбара уже нет).

Но в OnCreate() для Activity я хочу определить, чтобы рисование производилось не во весь экран, а на том самом DrawView1, созданном в дизайн-тайме и вписанном в экранную компоновку, а отрисовка тулбара и обработка нажатий кнопок управлялась штатными средствами вне моего View.

Опробовал способы:
а) setContentView(R.id.DrawView1); - приложение стартует, но сразу закрывается без отрисовки
б) setContentView(findViewById(R.id.DrawView1)); - аналогично




Подскажите, пожалуйста, как мне все-таки корректно сослаться и передать управление отрисовкой вьюшке, созданной в дизайн-тайме и занимающей лишь часть экранной области.
Спасибо.

P.S. Прошу прощения за этот, возможно, глупый вопрос. Просто все статьи, уроки и ресурсы, посвященные графике, в примерах рассматривают полноэкранные View, с ними как раз все более-менее ясно.

Ответить