问题
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.
回答1:
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.
回答2:
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
来源:https://stackoverflow.com/questions/8762996/preferences-of-varying-height-within-a-preferenceactivity