2017-02-22 6 views
2

私は新しい開発者です。嗜好の間のスペースは大きく、良くないようです。私は定義された優先レイアウトファイルを持っています。 それらをより近くに設定するには?ありがとう!プリファレンス間のスペースを設定する方法

あるpreferences.xml

<PreferenceCategory 
    android:title="@string/title_user_profile" 
    android:key = "@string/preference_key_category_usersetting" 
    android:layout="@layout/preference_layout"> 

    <Preference android:title="@string/user_email_address" 
    android:key="@string/preference_key_email" 
    android:summary="@string/summary_joined_from" 
    android:editable="false" 
    android:clickable="false" 
    android:lineSpacingExtra="-4dp"/> 

    <com.ipretii.app.activity.setting.NamePreference 
    android:key="@string/preference_key_username" 
    android:summary="Type in your user name" 
    android:lineSpacingExtra="-4dp"/> 

    <com.ipretii.app.activity.setting.BirthYearPickerPreference 
    android:title="Birth Year" 
    android:key="@string/preference_key_birthyear" 
    android:lineSpacingExtra="-4dp"/> 

    </PreferenceCategory> 

preference_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <TextView android:id="@+android:id/title" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="@dimen/text_size_title" 
    android:textColor="@color/colorPrimary" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" 
    android:paddingTop="16dp"/> 

    <TextView android:id="@android:id/summary" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="@dimen/text_size_subheading" 
    android:textColor="@color/colorSubHeadingText" 
    android:paddingRight="16dp"/> 

    </LinearLayout> 

答えて

0

解決策が好きではないとは思いますが、私は次のコードでこれを解決しました。 DialogPreference、CheckBoxPreference、およびListPreferenceでこれをテストしました。私はカスタムレイアウトでこの設定を試しませんでした。私SettingsFragmentで

は、私がListAdapterをラップし、0にそのすべての子のための垂直方向のパディングを設定し、クラス作成:

// An Adapter that wraps another adapter, but updates all child Views to have zero vertical padding 
public static class ListAdapterWrapper implements ListAdapter 
{ 
    private ListAdapter wrappedAdapter; 

    public ListAdapterWrapper(ListAdapter wrappedAdapter) 
    { 
     super(); 
     this.wrappedAdapter = wrappedAdapter; 
    } 

    @Override 
    public android.view.View getView(int i, android.view.View view, android.view.ViewGroup viewGroup) 
    { 
     View newView = wrappedAdapter.getView(i, view, viewGroup); 
     if (newView != null && newView instanceof LinearLayout) 
     { 
      LinearLayout layout = (LinearLayout)newView; 

      // set the top and bottom padding to 0 for each child 
      int count = layout.getChildCount(); 
      for(int ii=0; ii<count; ii++) 
      { 
       View v = layout.getChildAt(ii); 
       v.setPadding(v.getPaddingLeft(), 0, v.getPaddingRight(), 0); 
      } 
     } 

     return newView; 
    } 

    @Override public boolean areAllItemsEnabled() { return wrappedAdapter.areAllItemsEnabled(); } 
    @Override public boolean isEnabled(int i) { return wrappedAdapter.isEnabled(i); } 
    @Override public void registerDataSetObserver(android.database.DataSetObserver dataSetObserver) { wrappedAdapter.registerDataSetObserver(dataSetObserver); } 
    @Override public void unregisterDataSetObserver(android.database.DataSetObserver dataSetObserver) { wrappedAdapter.unregisterDataSetObserver(dataSetObserver); } 
    @Override public int getCount() { return wrappedAdapter.getCount(); } 
    @Override public java.lang.Object getItem(int i) { return wrappedAdapter.getItem(i); } 
    @Override public long getItemId(int i) { return wrappedAdapter.getItemId(i); } 
    @Override public boolean hasStableIds() { return wrappedAdapter.hasStableIds(); } 
    @Override public int getItemViewType(int i) { return wrappedAdapter.getItemViewType(i); } 
    @Override public int getViewTypeCount(){ return wrappedAdapter.getViewTypeCount(); } 
    @Override public boolean isEmpty() { return wrappedAdapter.isEmpty(); } 
} 

をそして私はListAdapterWrapperとリストビューのアダプターを上書き:

@Override 
    public void onActivityCreated(android.os.Bundle savedInstanceState) 
    { 
     super.onActivityCreated(savedInstanceState); 

     ListView list = (ListView)getView().findViewById(android.R.id.list); 
     if (list != null) 
     { 
      // Overwrite the adapter so we can decrease the padding between Settings items 
      list.setAdapter(new ListAdapterWrapper(list.getAdapter())); 
     } 
    } 
0

私はあなたがあなたの好みのためのandroid:padding属性を調整することができると思います。

たとえば、それらを垂直に近づけたい場合は、android:paddingTopを8dpなどに設定できます。

+0

はい、私は縦に近いほうがいいです。私はpaddingTopを小さく設定し、それを取り除いた。スペースはまだ縮小されていません。 –

関連する問題