Почему настройки в моем Android PreferenceFragment имеют отступ?

Когда я создаю свой PreferenceFragment, все предпочтения в категории предпочтений имеют отступ.

Когда я делаю это в новом проекте с настройками по умолчанию (только Activity и PreferenceFragment), настройки отображаются просто отлично (без отступов).

public class SettingsFragment extends PreferenceFragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.fragment_settings);
    }

}

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory android:title="Game Setup">

        <CheckBoxPreference
            android:key="checkbox_randomize_opponents"
            android:title="Randomize Opponents"
            android:summary="Randomize opponents after round 1" />

    </PreferenceCategory>
</PreferenceScreen>

person VernonG    schedule 16.11.2014    source источник
comment
что вы подразумеваете под меньшим приложением?   -  person ataulm    schedule 16.11.2014
comment
Пробовали ли вы отлаживать свой пользовательский интерфейс с помощью средства просмотра иерархии? developer.android.com/tools/debugging/   -  person Daniel Kopitchinski    schedule 16.11.2014
comment
Я имею в виду приложение только с действием, фрагментом и фрагментом предпочтения. Попробую сейчас Даниэль, впервые использую Hierarchy Viewer, спасибо за подсказку.   -  person VernonG    schedule 16.11.2014
comment
Узнал, что это в моей теме, но до сих пор не понимаю. Когда я это комментирую, это работает. ‹название элемента=android:icon›@android:color/transparent‹/item›   -  person VernonG    schedule 16.11.2014
comment
Кроме того, когда я устанавливаю свой собственный значок через android:icon в своем стиле, он размещает его перед моими предпочтениями, что объясняет, почему установка прозрачности приведет к отступу в моих предпочтениях. Я думаю, я просто сбит с толку тем, почему это будет сделано, поскольку я хочу установить свой собственный значок, который не предшествует моим предпочтениям.   -  person VernonG    schedule 16.11.2014
comment
Можете ли вы отредактировать свой ответ, чтобы поместить соответствующую часть файла вашей темы, пожалуйста?   -  person ataulm    schedule 16.11.2014


Ответы (1)


По умолчанию настройки не имеют значков. Иконки можно рисовать, и когда вы указываете их с помощью атрибута android:icon, фрагмент предпочтения будет отображать то, что вы когда-либо устанавливали.

android:color/transparent является рисуемым. Установка этого параметра как android:icon, в дополнение к тому факту, что фрагмент предпочтения имеет фиксированный размер для значков, заставит фрагмент отображать значок. В данном случае это прозрачный квадрат фиксированных размеров.

Попробуйте изменить его на @android:color/black и вместо «отступа» вы должны увидеть черный квадрат с фиксированными размерами.

Если вам не нужен значок, вы можете либо установить для атрибута значка значение android:icon="@null", либо просто полностью удалить атрибут (значок по умолчанию отсутствует).

person ataulm    schedule 16.11.2014
comment
Спасибо, атолм. Причина, по которой значок был установлен прозрачным, заключалась в том, что все мое приложение использовало эту тему, и я хотел удалить значок из панели действий. Вместо этого я нашел подходящий способ удалить значок с панели действий без использования моей основной темы приложения. Еще раз спасибо! - person VernonG; 18.11.2014
comment
не беспокойся. Для других, посещающих это, подходящий способ - иметь тему для конкретного действия, для которого вы хотите переопределить стили. - person ataulm; 19.11.2014