Android PreferenceActivity项目高度

时间:2011-12-04 15:17:36

标签: android preferenceactivity

我有一个带有两个复选框的PreferenceActivity。一切正常,但我有UI问题;并非所有复选框的文本都适合复选框行。

有没有一种很好的方法可以设置这些复选框首选项的最小高度而不需要对值进行硬编码?

编辑 - 添加xml:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
   <CheckBoxPreference
      android:key="alarm_set"
      android:title="@string/set_alarm_title"
      android:defaultValue="true" />
   <CheckBoxPreference
      android:key="store_pages"
      android:title="@string/store_downloaded_pages_title"
      android:summary="@string/store_downloaded_pages"
      android:defaultValue="false" />
</PreferenceScreen>

3 个答案:

答案 0 :(得分:5)

根据this关于具有相同iussue的文字偏好的问题我使用此类。

public class LongSummaryCheckBoxPreference extends CheckBoxPreference 
{ 
    public LongSummaryCheckBoxPreference(Context ctx, AttributeSet attrs, int defStyle) 
    { 
        super(ctx, attrs, defStyle);         
    } 

    public LongSummaryCheckBoxPreference(Context ctx, AttributeSet attrs) 
    { 
        super(ctx, attrs);   
    } 

    @Override 
    protected void onBindView(View view)
    {        
        super.onBindView(view); 

        TextView summary= (TextView)view.findViewById(android.R.id.summary); 
        summary.setMaxLines(4); 
    }        
} 

在xml中它看起来像这样。

    <com.iforpowell.android.ipbike.LongSummaryCheckBoxPreference android:key="@string/key_distance_line_enable"
        android:title="@string/title_distance_line_enable" android:summary="@string/summary_distance_line_enable"
        android:defaultValue="true" />
    <com.iforpowell.android.ipbike.LongSummaryCheckBoxPreference android:key="@string/key_altitude_line_enable"
        android:title="@string/title_altitude_line_enable" android:summary="@string/summary_altitude_line_enable"
        android:defaultValue="true" />

对于EditTextPreference我有完全相同的事情,它在Api&lt; = 7

中的摘要中存在最多2行的相同问题

答案 1 :(得分:0)

在xml中,您可以将高度设置为“wrap_content”。在这一点上,它将调整大小以适应您放入其中的任何内容。所以,沿着这些方向:

<CheckBox
    android:id="@+id/checkBox1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="CheckBox" />

答案 2 :(得分:0)

这应该有帮助

这样做:

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

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