2016-06-28 109 views
1

我使用依赖于从AppCompatDelegate AndroidStudio(活动设置活动)中产生的SettingsActivity。我已经成功添加一个工具栏,如下步骤设置自定义的分隔线用于显示器偏好标题列表视图:定制偏好头布局

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    LinearLayout root = 
      (LinearLayout) findViewById(android.R.id.list).getParent().getParent().getParent(); 
    Toolbar toolbar = (Toolbar) LayoutInflater.from(this).inflate(R.layout.toolbar, root, false); 
    root.addView(toolbar, 0); 
    toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      finish(); 
     } 
    }); 

    ListView listView = getListView(); 
    listView.setDivider(ContextCompat.getDrawable(this, R.drawable.settings_divider)); 
    listView.setDividerHeight(1); 

    setupActionBar(); 
} 

但是,我想不出如何增加assocatied每个ListView项填充既不如何增加图标和首选标题标题之间的间距。是否可以使用样式或传递自定义布局?

enter image description here

回答

1

您可以创建一个覆盖PreferenceCategory自定义布局。例如像这样:

public class CustomPreferenceCategory extends PreferenceCategory { 

    public CustomPreferenceCategory(Context context) { 
     super(context); 
    } 

    public CustomPreferenceCategory(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public CustomPreferenceCategory(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    @Override 
    protected View onCreateView(ViewGroup parent) { 
     View view = super.onCreateView(parent); 

     return view; 
    } 

    @Override 
    public View getView(View convertView, ViewGroup parent) { 
     final View view = super.getView(convertView, parent); 
     view.setPadding(view.getPaddingLeft(), view.getPaddingTop()*2, view.getPaddingRight(), 10); 

     TextView textView = (TextView) view.findViewById(android.R.id.title); 
     textView.setGravity(Gravity.BOTTOM); 

     return view; 
    } 
} 

通过重写这些方法(和一些更多,如果你愿意,你可以设置填充,保证金,的backgroundColor等..

然后用CustomPreferenceCategory代替PreferenceCategory

当然,您也可以使用Preference(我不确定您是否需要自定义标题或自定义列表项目 - 类别将为标题并且首选项是正常列表项目)