Android 自定义首选项标题布局
我使用的是由依赖于AppCompatDelegate的AndroidStudio(新建、活动、设置活动)生成的SettingsActivity。我已成功添加工具栏,并将自定义分隔符设置到用于显示器首选项标题的listview,如下所示:Android 自定义首选项标题布局,android,android-appcompat,android-preferences,Android,Android Appcompat,Android Preferences,我使用的是由依赖于AppCompatDelegate的AndroidStudio(新建、活动、设置活动)生成的SettingsActivity。我已成功添加工具栏,并将自定义分隔符设置到用于显示器首选项标题的listview,如下所示: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout root =
@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();
}
但是,我不知道如何增加与每个listview项目关联的填充,也不知道如何增加图标和首选项标题之间的间距。是否可以使用样式或传递自定义布局
您可以创建一个覆盖
首选项类别的自定义布局。例如:
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;
}
}
通过覆盖这些方法(如果需要,还可以设置一些其他方法),您可以设置填充、边距、背景颜色等
然后使用CustomPreferenceCategory
而不是PreferenceCategory
当然,您也可以使用首选项(我不确定您是否需要自定义标题或自定义列表项-类别将是标题,首选项是普通列表项)列表的适配器应该在getView
方法中为您自己的自定义视图充气。在视图中为内容设置填充
或者您可以使用此解决方案: