Белый фон на Preference for Tablets

Я устанавливаю фон для своей активности предпочтений, поэтому я написал стиль в styles.xml.

<style 
   name="PreferencesTheme" 
   parent="@android:style/Theme.Light.NoTitleBar.Fullscreen">
   <item name="android:windowBackground">@drawable/background</item>
</style>

и в деятельности,

  <activity
          android:name="com.phonelight.realparrot.MainActivity"
          android:label="Real Parrot"
          android:screenOrientation="portrait"
          android:theme="@style/PreferencesTheme">
       <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
       </intent-filter>

  </activity>

Я запускаю это на эмуляторе для двух устройств. Первый — мобильный телефон, второй — планшет. мобильный телефонПланшет

Почему на планшете не появляется фоновое изображение. Есть только небольшой запас. Я запускаю его на настоящем планшете, и весь экран тоже белый.


person yasserbn    schedule 09.12.2012    source источник
comment
Какая версия API для обоих?   -  person PearsonArtPhoto    schedule 09.12.2012
comment
Мобильный телефон Android 2.2; Планшет андроид 3.0   -  person yasserbn    schedule 09.12.2012
comment
Считаете ли вы, что настройка фона в теме не работает для настройки «Активность на планшетах». Может быть, мне следует установить фон для предпочтения Activity в java-коде, как вы думаете?   -  person yasserbn    schedule 09.12.2012


Ответы (3)


Я думаю, вы хотите использовать другую тему. Я не уверен, в чем именно разница между ними, но я подозреваю небольшие различия в API.

<style 
   name="PreferencesTheme" 
   parent="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">
   <item name="android:windowBackground">@drawable/background</item>
</style>
person PearsonArtPhoto    schedule 09.12.2012
comment
Это не работает. Я решаю проблему, добавляя в код Java: preference.setBackgroundResource(R.xml.background); Я ценю вашу помощь, хотя. - person yasserbn; 09.12.2012
comment
Если бы вы могли опубликовать ответ на свой вопрос, это помогло бы людям, которые позже столкнутся с той же проблемой, и было бы очень признательно. - person PearsonArtPhoto; 09.12.2012

Я решаю проблему, добавляя в Preference Activity

preference.setBackgroundResource(R.xml.background);
person yasserbn    schedule 09.12.2012

Я наткнулся на эту проблему для планшетов, но ответ yasserbn мне не помог, а именно нет указания, что...

preference.setBackgroundResource(R.xml.background);

... вызывается.

На больших экранах Android PreferenceActivity перезапускается, чтобы отобразить настройки во фрагменте. Проблема возникает из-за того, что мы не можем изменить фон этого контейнера фрагментов, поскольку его идентификатор макета com.android.internal.R.id.prefs_frame является закрытым.

Обходным путем для этого является рекурсивная очистка фона для всех дочерних представлений, поскольку мы всегда можем получить доступ к корневому представлению:

@Override
protected void onCreate(Bundle savedInstanceState) {
    ThemeManager.setTheme(this);
    super.onCreate(savedInstanceState);
    clearBackground(findViewById(android.R.id.content));

    // other stuff...
}

private void clearBackground(View view) {
    view.setBackgroundResource(0);
    if (view instanceof ViewGroup) {
        ViewGroup viewGroup = (ViewGroup) view;
        for (int i = 0; i < viewGroup.getChildCount(); i++)
            clearBackground(viewGroup.getChildAt(i));
    }
}

Это не идеально, а именно, если какие-либо из ваших предпочтений используют настраиваемые представления с фоном, хотя это в любом случае маловероятно.

person Stephen Kidson    schedule 26.09.2013