Rozwijam aplikację na Androida 2.2.
Mam fragment .
W onCreateView(...)
wywołaniu zwrotnym mojej klasy fragmentów nadmuchuję układ do fragmentu, jak poniżej:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.login, null);
return view;
}
Powyższy plik układu jest zawyżony (login.xml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Username" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Username" />
</LinearLayout>
Chciałbym ustawić paddingTop
na powyższy <LinearLayout>
element i chcę to zrobić w kodzie Java zamiast w XML.
Jak ustawić paddingTop
, aby <LinearLayout>
w moim fragmentu kodu Java klasy ??
findViewById
a następnie wywołaćsetPadding
.view
jest już LinearLayout, w tym przypadku nie trzeba go ponownie znajdować. Biorąc to pod uwagę, jest to jednak wyjątkowy.Odpowiedzi:
view.setPadding(0,padding,0,0);
Spowoduje to ustawienie górnego wypełnienia na
padding
-piksele.Jeśli chcesz go
dp
zamiast tego ustawić , możesz dokonać konwersji :źródło
float scale = getResources().getDisplayMetrics().density;
int size = (int) (sizeInPx*scale + 0.5f);
sizeInDp
rzeczywistości jest to liczba pikseli, jaką uzyskujesz podczas konwersjisizeInPx
dps.Aby odpowiedzieć na drugie pytanie:
jak sugerują SpK i Jave, ustawi wypełnienie w pikselach. Możesz ustawić go w dp, obliczając wartość dp w następujący sposób:
Mam nadzieję, że to pomaga!
źródło
Jeśli przechowujesz wypełnienie w plikach zasobów, możesz po prostu zadzwonić
Dokonuje konwersji dla Ciebie.
źródło
Korzystając z Kotlin i biblioteki android-ktx, możesz po prostu to zrobić
Zobacz dokumenty tutaj
źródło
Możesz ustawić dopełnianie do swojego widoku, pro gramatycznie w całym poniższym kodzie -
Dostępne są również różne rodzaje wypełnień -
Wyściółka
PaddingBottom
PaddingLeft
PaddingRight
PaddingTop
Te linki odsyłają do strony programistów Androida. Mam nadzieję, że to ci bardzo pomoże.
źródło
Korzystanie
TypedValue
jest znacznie czystszym sposobem konwersji na piksele w porównaniu do ręcznego obliczania:Zasadniczo odpowiednio
TypedValue.applyDimension
konwertuje pożądane wypełnienie w piksele, w zależności od właściwości wyświetlania bieżącego urządzenia.Aby uzyskać więcej informacji, zobacz: TypedValue.applyDimension Docs .
źródło
użyj poniższej metody do dynamicznego ustawiania paddingu
Przykład:
źródło
Napisz kod, aby ustawić padding, może ci to pomóc.
Użyj
LinearLayout.LayoutParams
lubRelativeLayout.LayoutParams
zgodnie z układem nadrzędnym widoku potomnegoźródło
źródło
Podczas wypełniania programowo konwertuj na wartości związane z gęstością, przekształcając piksel w Dp.
źródło