我正在使用依赖于AppCompatDelegate的AndroidStudio(新,活动,设置活动)生成的SettingsActivity。我成功添加了一个工具栏,并将自定义分隔符设置为用于显示器首选项标题的listview,如下所示:
@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项相关联的填充,以及如何增加图标和首选项标题标题之间的间距。是否可以使用样式或传递自定义布局?
答案 0 :(得分: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;
}
}
通过覆盖这些方法(如果你想要的话还可以设置一些填充,边距,背景颜色等......
然后使用CustomPreferenceCategory
代替PreferenceCategory
当然你可以用Preference
做同样的事情(我不确定你是否想要自定义标题或自定义列表项 - 类别将是标题,首选项是正常列表项)
答案 1 :(得分:0)
列表的适配器应该在getView
方法中为您自己的自定义视图充气。在视图中为内容设置填充。 Much like this
或者您可以使用此解决方案:https://stackoverflow.com/a/5309871/6507689