PreferenceActivity 中不同高度的首选项

发布于 2024-12-25 11:11:13 字数 247 浏览 1 评论 0原文

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

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

有没有办法用不同的布局高度来呈现给定的偏好。

我查看了与首选项相关的 API 演示,但没有看到任何与我想要做的事情相匹配的内容。

I have a custom class that extends Preference that I'm using in conjunction with a PreferenceActivity.

When I try to adjust the height in the layout my Preference is using (with a static layout_height or with wrap_content) it is always displayed in a uniform height cell in the Preference Activity - the same size that all of the "normal" preferences default to.

Is there a way present a given preference with a different layout_height.

I've looked at the API demos related to preferences and I'm not seeing anything that matches what I'm trying to do.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

彩扇题诗 2025-01-01 11:11:13

您可以在首选项中覆盖 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,否则您可能会遇到类转换异常。

You can override getView(View, ViewGroup) in your Preference. Then send new LayoutParams to the getView(). I tried it with a customized CheckBoxPreference. Works great.

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;
}

}

Just be careful to use the correct LayoutParams for the View or you might get a class cast exception.

囍笑 2025-01-01 11:11:13

这应该有所帮助:

<!-- 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

This should help:

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

another styling attributes that can be overridden can be found here preference item layout

Original answer https://stackoverflow.com/a/27027982/975886

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文