Является ли неявный атрибут ListFragment / padding? Как его удалить?

При использовании ListFragment в моем макете я обнаружил, что у него есть нежелательное левое поле – красная часть на изображении (которая поднимается до панели действий.

Я не нашел никакой документации по этому вопросу, но, надеюсь, кто-то узнает – как я могу удалить это пространство?

Вы можете видеть из изображения, что маржа не находится на уровне элемента списка, но она находится на каком-то более высоком уровне, поэтому я предполагаю, что это маркер фрагмента.

Примечательно, что другие фрагменты просто тонкие и растянуты до полной ширины экрана. Единственными проблемными фрагментами являются те, кто расширяет ListFragment .

Нежелательная маржа красного цвета

У меня была такая же проблема. Я использую ActionBarSherlock и смог исправить это с помощью стилей и тем .

Во-первых, я добавил это в мои темы.xml:

 <style name="Theme.Base" parent="@style/Theme.Sherlock.Light.DarkActionBar"> ... <item name="android:listViewStyle">@style/ListViewStyle.MyApp</item> ... </style> 

Это говорит SherlockListFragment использовать мой собственный стиль для ListView . Затем я добавил этот стиль для своих стилей. Xml:

 <style name="ListViewStyle.MyApp" parent="android:Widget.ListView"> ... <item name="android:paddingLeft">0dp</item> ... </style> 

Вы также можете попробовать один из следующих параметров:

  <item name="android:layout_marginLeft">0dp</item> <item name="android:padding">0dp</item> <!-- Instead of paddingLeft, if you want 0, everywhere --> 

Указание на ListView на мой пользовательский стиль устранило проблему для меня. По сути, установка стилей в виджетах ListView должна делать трюк.

Вы лучше всего переопределяете макет, так как заполнение является частью макета по умолчанию для списка.

http://developer.android.com/reference/android/app/ListFragment.html

Поэтому макет похож на следующий:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <ListView android:id="@id/android:list" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:visibility="gone" android:drawSelectorOnTop="false" /> <TextView android:id="@id/android:empty" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="No data" /> </LinearLayout> 

А затем заполнить его в onCreateView ()

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View view = inflater.inflate(R.layout.fragment_bet_statement_list, container, false); ... } 

Немного подробный, но это самый гибкий способ сделать это.