2016-06-28 84 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(我不確定您是否需要自定義標題或自定義列表項目 - 類別將爲標題並且首選項是正常列表項目)