Предпочтения различной высоты в PreferenceActivity - PullRequest
4 голосов
/ 06 января 2012

У меня есть собственный класс, который расширяет Preference, который я использую вместе с PreferenceActivity.

Когда я пытаюсь отрегулировать высоту в макете, который использует мой Preference (со статическим layout_height или с wrap_content) оно всегда отображается в ячейке с одинаковой высотой в действии предпочтений - такого же размера, как все "нормальные" предпочтения по умолчанию.

Есть ли способ представить данное предпочтение с другим layout_height.

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

Ответы [ 2 ]

7 голосов
/ 13 января 2012

Вы можете переопределить getView(View, ViewGroup) в своем предпочтении.Затем отправьте new LayoutParams на getView().Я попробовал это с настроенным CheckBoxPreference.Отлично работает.

import android.content.Context;
import android.preference.CheckBoxPreference;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView.LayoutParams;


public class CustomCheckBoxPreference extends CheckBoxPreference {

public CustomCheckBoxPreference(final Context context, final AttributeSet attrs,
        final int defStyle) {
    super(context, attrs, defStyle);
}

public CustomCheckBoxPreference(final Context context, final AttributeSet attrs) {
    super(context, attrs);
}

public CustomCheckBoxPreference(final Context context) {
    super(context);
}

@Override
public View getView(final View convertView, final ViewGroup parent) {
    final View v = super.getView(convertView, parent);
    final int height = android.view.ViewGroup.LayoutParams.MATCH_PARENT;
    final int width = 300;
    final LayoutParams params = new LayoutParams(height, width);
    v.setLayoutParams(params );
    return v;
}

}

Просто будьте осторожны, используйте правильные LayoutParams для View, иначе вы можете получить исключение приведения класса.

0 голосов
/ 20 ноября 2014

Это должно помочь:

<!-- Application theme -->
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
    <!-- Min item height -->
    <item name="android:listPreferredItemHeight">10dp</item>
</style>

другие атрибуты стиля, которые можно переопределить, можно найти здесь макет элемента предпочтений

Оригинальный ответ https://stackoverflow.com/a/27027982/975886

...