2017-02-22 2 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를 사용하여이 테스트를 수행했습니다. 나는 커스텀 레이아웃으로 Preferences를 시도하지 않았다. 내 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와의 ListView의 어댑터를 덮어 :

@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을 작게 설정하고 제거했습니다. 공간은 여전히 ​​축소되지 않습니다. –