PreferenceActivity中不同高度的首选项

时间:2012-01-06 19:01:13

标签: android preferenceactivity preference

我有一个自定义类,它扩展了我正在与PreferenceActivity一起使用的Preference。

当我尝试调整我的Preference正在使用的布局中的高度(使用静态layout_height或使用wrap_content)时,它始终显示在Preference Activity中的统一高度单元格中 - 与所有“正常”相同的大小首选项默认为。

是否存在使用不同layout_height的给定首选项的方式。

我查看了与首选项相关的API演示,但我没有看到任何与我正在尝试的内容相匹配的内容。

2 个答案:

答案 0 :(得分:7)

您可以在首选项中覆盖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;
}

}

请注意为View使用正确的LayoutParams,否则可能会遇到类强制转换异常。

答案 1 :(得分:-1)

这应该有所帮助:

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

可以在此处找到可以覆盖的其他样式属性preference item layout

原始答案https://stackoverflow.com/a/27027982/975886