Android 在PreferenceActivity中具有不同高度的首选项

Android 在PreferenceActivity中具有不同高度的首选项,android,preferenceactivity,preference,Android,Preferenceactivity,Preference,我有一个自定义类,它扩展了我与PreferenceActivity一起使用的Preference 当我尝试调整我的首选项使用的布局中的高度时(使用静态布局高度或包裹内容),它总是显示在首选项活动中的统一高度单元格中-与所有“正常”首选项默认的大小相同 是否有一种方法可以用不同的布局高度呈现给定的偏好 我已经查看了与首选项相关的API演示,但没有看到任何与我尝试执行的操作相匹配的内容。您可以在首选项中覆盖getView(View,ViewGroup)。然后将新的布局参数发送到getView()。我

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

当我尝试调整我的首选项使用的布局中的高度时(使用静态布局高度或包裹内容),它总是显示在首选项活动中的统一高度单元格中-与所有“正常”首选项默认的大小相同

是否有一种方法可以用不同的布局高度呈现给定的偏好


我已经查看了与首选项相关的API演示,但没有看到任何与我尝试执行的操作相匹配的内容。

您可以在首选项中覆盖
getView(View,ViewGroup)
。然后将新的布局参数发送到
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,否则可能会出现类强制转换异常。

这将有助于:

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

10dp
可以在此处找到另一个可以覆盖的样式属性


原始答案

在Api 9级设备上,首选项的高度不同,但大小取决于内容。对于API7设备,我必须进行更改以适应sumaries>2行。这是你的问题吗?虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能会无效。@Mathias这只是为了避免重复,它可以工作。但是,您将丢失微妙的复选框动画。