Странная проблема макета. (пожалуйста, смотрите прикрепленное изображение) - PullRequest
0 голосов
/ 29 сентября 2010

alt text

Изображение выше - первая страница моей игры.Обычно большое синее фоновое изображение «кнопки» не должно отображаться там.

Я объявляю свое пользовательское фоновое изображение для кнопок в файле макета следующим образом:

<Button android:id="@+id/id_button_startgame"
                             android:layout_width="wrap_content"
                             android:layout_height="48dp"
                             android:layout_weight="1"
                             android:textSize="26sp"
                             android:text="@string/start_game"
                             android:textColor="@color/solid_red"
                             android:background="@drawable/button_bg"

                             />

А вот button_bg.xmlв папке Drawable

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/button01_focused" /> 
    <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/button01_pressed" /> 
    <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/button01_pressed" /> 
    <item android:drawable="@drawable/button01_idle" /> 
</selector>

Как вы можете видеть прикрепленное изображение.Три кнопки ниже - нормальный случай.Я использую их везде в моих приложениях.Но иногда появляется тот, что в центре экрана.Эта большая кнопка не может быть нажата или что-то еще.Это просто зависло над моей игрой.Я могу запустить игру, но, очевидно, не могу видеть содержимое, потому что эта большая синяя штука покрывает все это.

Я могу воспроизвести эту ошибку, продолжая запускать / выходить из игры несколько раз.

IЯ хотел бы включить больше информации.Но не знаю, какую информацию я должен дать вам.Я использую FrameLayout, чтобы расположить пользовательский интерфейс над SurfaceView.

И большую часть времени эта ошибка не происходит.Кажется, это происходит случайно после того, как я запускаю / выхожу из игры и повторяюсь несколько раз.

Кто-нибудь видел что-то подобное раньше?Если да, пожалуйста, дайте мне знать, как вам удалось это исправить?

Ответы [ 2 ]

1 голос
/ 29 сентября 2010

Проблема решена.Всем спасибо.

Решение: «Не используйте прозрачный фон на макете»

Ваши ответы вместе помогли мне решить эту проблему.

Хорошо, сначала.Я нашел способ на 100% воспроизвести ошибку.

У меня есть еще одно действие - действие «Пауза в игре», которое имеет полупрозрачный фон и будет зависать над всем при запуске.

Чтобы воспроизвести ошибку: 1. Запустите действие «Пауза».2. Сдвиньте клавиатуру.3. Эта ошибка появится после действия «Пауза».

@ Orsol - Да, я использую прозрачный фон для макета, который содержит эти кнопки

<LinearLayout android:id="@+id/bottom_ui_container"
                android:orientation="vertical"
                android:background="@drawable/transparent_background"
                android:gravity="bottom"
                 android:layout_width="match_parent"
                android:layout_height="match_parent">

                    <LinearLayout android:id="@+id/title_button_container"
                        android:orientation="horizontal"
                         android:background="@drawable/transparent_background"
                        android:gravity="center"
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:visibility="gone">

Этот 2 макета должен иметь3 кнопки расположены горизонтально внизу, как в SS.До сих пор не понимаю, почему мой «фон кнопки» становится фоном макета после того, как я открываю клавиатуру ...

@ mbanzon и Cristian - Спасибо за ваши советы!=) Я бы с удовольствием поиграл с иерархией в следующий раз, когда у меня возникнут проблемы!Кстати, я сделал эти снимки, используя камеру, потому что тогда я не знаю, когда и как воспроизвести ошибку.

@ Октавиан Дамиан и КейсиБ - Спасибо за вашу помощь!=) Я не буду публиковать свой макет сейчас, так как он решен.

Спасибо еще раз всем!Без тебя я бы никогда этого не исправил!

0 голосов
/ 30 сентября 2010

У меня была такая же проблема. В моем случае фон экрана был установлен на

 <color name="transparent">#00000000</color>

проблема была решена путем замены на

<color name="transparent">@android:color/transparent</color>
...