Programowo dodam widoki niestandardowe do pionowego układu LinearLayout i chciałbym, aby między widokami było trochę miejsca. Próbowałem dodać: setPadding (0, 1, 0, 1) do mojego konstruktora CustomView, ale nie wydaje się to mieć żadnego efektu. Jakakolwiek rada?
* Wskazano, że powinienem stosować marginesy. Ponieważ dynamicznie dodam widoki, muszę ustawić marginesy z kodu (nie w xml). Uważam, że sposób na to jest poniżej, ale to nie działa.
public class MyView extends View
{
public MyView (Context context)
{
super(context);
MarginLayoutParams params = new MarginLayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(0, 10, 0, 10);
setLayoutParams(params);
*Edytować. Próbowałem również użyć MarginLayoutParams jako parametru podczas dodawania widoków do układu liniowego (jak poniżej). To też nie zadziałało:
MarginLayoutParams params = new MarginLayoutParams(linearLayout.getLayoutParams());
linearLayout.setMargins(0, 10, 0, 10);
linearLayout.addView(view, params);
Odpowiedzi:
Powinieneś
android:layout_margin<Side>
na dzieciach. Wypełnienie jest wewnętrzne.źródło
Rozwiązanie API> = 11 :
Możesz zintegrować wyściółkę z przegrodą. W przypadku, gdy nie używasz żadnego, po prostu utwórz wysoki pusty element do rysowania i ustaw go jako
LinearLayout
dzielnik:empty_tall_divider.xml:
źródło
GONE
. Określającandroid:showDividers="middle"
, otrzymasz miejsce tylko tam, gdzie jest to naprawdę potrzebne.Android obsługuje teraz dodawanie widoku przestrzeni między widokami. Jest dostępny od 4.0 ICS.
źródło
Poniższy przykład robi programowo to, czego potrzebujesz. Użyłem stałego rozmiaru (140 398).
źródło
Od poziomu API 14 możesz po prostu dodać (przezroczysty) rysowany separator:
a resztą zajmie się za Ciebie!
źródło
8dp
skąd to się wzięło?Użyj
LinearLayout.LayoutParams
zamiastMarginLayoutParams
. Oto dokumentacja.źródło
LinearLayout.LayoutParams
rozszerza sięMarginLayoutParams
i dziedziczy tę samąsetMargins()
metodę, której używałeś powyżej ...Jeśli używasz ActionBarSherlock , możesz użyć com.actionbarsherlock.internal.widget.IcsLinearLayout:
źródło
Używanie dopełnienia w układzie widoku podrzędnego.
layout.xml
backage_text.xml
źródło
Możesz uzyskać
LayoutParams
rodzicaLinearLayout
i zastosować do poszczególnych widoków w ten sposób:źródło
Spróbuj dodać widżet Space po dodaniu widoku takiego:
źródło
Łatwym sposobem, aby to zrobić dynamicznie, jest dodanie wyściółki do dzieci . Możesz po prostu ustawić to za pomocą .setPadding () na dodawanym obiekcie. W tym przykładzie jest dodawanie ImageView do LinearLayout:
Poniższy obraz przedstawia dwa ImageViews, które zostały dodane z dopełnieniem:
źródło
Jeśli twój układ zawiera etykiety lub jakiś kontener na tekst. Możesz dodać na końcu każdego tekstu "\ n", aby podzielić linię i zrobić odstęp między elementami.
Przykład:
źródło