Jak mogę mieć jeden układ dla poziomego i jeden dla pionowego? Chcę uzyskać dodatkową szerokość i zaoszczędzić miejsce w pionie, gdy użytkownik obróci telefon na bok.
Jak mogę mieć jeden układ dla poziomego i jeden dla pionowego? Chcę uzyskać dodatkową szerokość i zaoszczędzić miejsce w pionie, gdy użytkownik obróci telefon na bok.
Odpowiedzi:
Domyślnie układy w programie /res/layout
są stosowane zarówno w orientacji pionowej, jak i poziomej.
Jeśli masz na przykład
/res/layout/main.xml
możesz dodać nowy folder /res/layout-land
, skopiować main.xml
do niego i dokonać niezbędnych zmian.
Zobacz też http://www.androidpeople.com/android-portrait-amp-landscape-differeent-layouts i http://www.devx.com/wireless/Article/40792/1954, aby uzyskać więcej opcji.
portrait
W aktualnej wersji Android Studio (v1.0.2) możesz po prostu dodać układ poziomy, klikając przycisk w edytorze wizualnym pokazanym na zrzucie ekranu poniżej. Wybierz „Utwórz odmianę krajobrazu”
layout-land
folderze. Masz jakiś pomysł, jak wywołać stamtąd układ? Nie można użyć R.layout.layout_name
. Próbuję ręcznie skonfigurować własne układy po zmianie konfiguracji, dzięki.
Układy w / res / layout są stosowane zarówno w orientacji pionowej, jak i poziomej, chyba że określono inaczej. Załóżmy, że mamy /res/layout/home.xml dla naszej strony domowej i chcemy, aby wyglądała inaczej w 2 typach układu.
Najszybszy sposób dla Android Studio 3.xx i Android Studio 4.xx
1.Przejdź do zakładki projektowania układu aktywności
2.Na górze należy nacisnąć przycisk orientacji dla podglądu , istnieje opcja utworzenia układu poziomego (obraz zaznaczenia), nowy folder zostanie utworzony jako plik układu xml dla tej konkretnej orientacji
Możesz pogrupować swój określony układ w odpowiedniej strukturze folderów w następujący sposób.
layout-land-target_version
to znaczy
layout-land-19 // cel KitKat
podobnie możesz tworzyć swoje układy.
Mam nadzieję, że to ci pomoże
-19
przyrostka? Czy jest to w jakiś sposób pomocne?
Wkrótce spróbuję to wyjaśnić.
Po pierwsze, możesz zauważyć, że teraz powinieneś używać ConstraintLayout zgodnie z żądaniem Google (zobacz bibliotekę androix).
W przypadku projekcji studyjnej w systemie Android można zapewnić układy specyficzne dla ekranu, tworząc dodatkowe katalogi res / layout /. Po jednym dla każdej konfiguracji ekranu, która wymaga innego układu.
Oznacza to, że musisz użyć kwalifikatora katalogu w obu przypadkach:
W rezultacie oto przykład:
res/layout/main_activity.xml # For handsets
res/layout-land/main_activity.xml # For handsets in landscape
res/layout-sw600dp/main_activity.xml # For 7” tablets
res/layout-sw600dp-land/main_activity.xml # For 7” tablets in landscape
Kwalifikatora można również używać w przypadku plików zasobów zasobów przy użyciu pliku dimens.xml.
res/values/dimens.xml # For handsets
res/values-land/dimens.xml # For handsets in landscape
res/values-sw600dp/dimens.xml # For 7” tablets
res / values / dimens.xml
<resources>
<dimen name="grid_view_item_height">70dp</dimen>
</resources>
res / values-land / dimens.xml
<resources>
<dimen name="grid_view_item_height">150dp</dimen>
</resources>
your_item_grid_or_list_layout.xml
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraintlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content
<ImageView
android:id="@+id/image"
android:layout_width="0dp"
android:layout_height="@dimen/grid_view_item_height"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="@drawable/border"
android:src="@drawable/ic_menu_slideshow">
</androidx.constraintlayout.widget.ConstraintLayout>
Źródło: https://developer.android.com/training/multiscreen/screensizes