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