我制作了一個包含 6 個選項的卡片視圖 GUI,垂直布局在我的 2 臺設備中看起來不錯。但是,在為橫向模式進行布局時,我看到它在一臺設備中被裁剪。
作業裝置
Android Version 11

不作業的設備
Android Version 9

代碼
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.TestActivity">
<TextView
android:id="@ id/title_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginStart="12dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="12dp"
android:layout_marginBottom="0dp"
android:text="@string/main_menu_title"
android:textSize="30sp"
android:textStyle="bold" />
<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="3"
android:rowCount="2"
android:layout_below="@id/title_view"
android:layout_margin="20dp"
android:layout_marginStart="20dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="20dp"
android:layout_marginBottom="10dp">
<androidx.cardview.widget.CardView
android:id="@ id/cardStart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="0"
android:layout_rowWeight="1"
android:layout_column="0"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:foreground="?selectableItemBackground"
app:cardCornerRadius="8dp"
app:cardElevation="8dp"
app:cardUseCompatPadding="true">
<TextView
android:id="@ id/txtCardStart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:gravity="center"
android:orientation="vertical"
android:text="Start"
android:textAlignment="center"
android:textStyle="bold"
app:drawableTopCompat="@drawable/ic_start_black_24dp" />
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@ id/cardTest"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="0"
android:layout_rowWeight="1"
android:layout_column="1"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:foreground="?selectableItemBackground"
app:cardCornerRadius="8dp"
app:cardElevation="8dp"
app:cardUseCompatPadding="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:gravity="center"
android:orientation="vertical"
android:text="Option B"
android:textAlignment="center"
android:textStyle="bold"
app:drawableTopCompat="@drawable/ic_baseline_camera_alt_24" />
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@ id/cardSettings"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="0"
android:layout_rowWeight="1"
android:layout_column="2"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:foreground="?selectableItemBackground"
app:cardCornerRadius="8dp"
app:cardElevation="8dp"
app:cardUseCompatPadding="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:gravity="center"
android:orientation="vertical"
android:text="Option C"
android:textAlignment="center"
android:textStyle="bold"
app:drawableTopCompat="@drawable/ic_settings_black_24dp" />
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@ id/cardStats"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="1"
android:layout_rowWeight="1"
android:layout_column="0"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:foreground="?selectableItemBackground"
app:cardCornerRadius="8dp"
app:cardElevation="8dp"
app:cardUseCompatPadding="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:gravity="center"
android:orientation="vertical"
android:text="Option D"
android:textAlignment="center"
android:textStyle="bold"
app:drawableTopCompat="@drawable/ic_insights_black_24dp" />
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@ id/cardContact"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="1"
android:layout_rowWeight="1"
android:layout_column="1"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:foreground="?selectableItemBackground"
app:cardCornerRadius="8dp"
app:cardElevation="8dp"
app:cardUseCompatPadding="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:gravity="center"
android:orientation="vertical"
android:text="Option E"
android:textAlignment="center"
android:textStyle="bold"
app:drawableTopCompat="@drawable/ic_baseline_email_24" />
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@ id/cardAbout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="1"
android:layout_rowWeight="1"
android:layout_column="2"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:foreground="?selectableItemBackground"
app:cardCornerRadius="8dp"
app:cardElevation="8dp"
app:cardUseCompatPadding="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:gravity="center"
android:orientation="vertical"
android:text="Option F"
android:textAlignment="center"
android:textStyle="bold"
app:drawableTopCompat="@drawable/ic_baseline_info_24" />
</androidx.cardview.widget.CardView>
</GridLayout>
</RelativeLayout>
顏色的差異只是因為我的一部手機處于深色模式,而另一部則沒有。這是由主題定義的:
<style name="AppTheme" parent="Theme.AppCompat.DayNight.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
是什么導致一部手機出現這種奇怪的裁剪,而另一部手機卻沒有?在這種情況下,有什么推薦的東西適用于所有設備嗎?
uj5u.com熱心網友回復:
如果它適合您,您可以嘗試使用約束布局嗎?只需將影像替換為您自己的影像。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.TestActivity">
<TextView
android:id="@ id/title_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="16dp"
android:text="@string/main_menu_title"
android:textSize="30sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.cardview.widget.CardView
android:id="@ id/cardStart"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_row="0"
android:layout_rowWeight="1"
android:layout_column="0"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:layout_marginBottom="20dp"
android:foreground="?selectableItemBackground"
app:cardCornerRadius="8dp"
app:cardElevation="8dp"
app:cardUseCompatPadding="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@ id/cardSettings"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@ id/cardTest"
app:layout_constraintTop_toBottomOf="@ id/cardAbout">
<TextView
android:id="@ id/txtCardStart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:gravity="center"
android:orientation="vertical"
android:text="Start"
android:textAlignment="center"
android:textStyle="bold"
app:drawableTopCompat="@drawable/ic_chats"
tools:layout_editor_absoluteX="87dp"
tools:layout_editor_absoluteY="305dp" />
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@ id/cardTest"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_row="0"
android:layout_rowWeight="1"
android:layout_column="1"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:layout_marginStart="20dp"
android:foreground="?selectableItemBackground"
app:cardCornerRadius="8dp"
app:cardElevation="8dp"
app:cardUseCompatPadding="true"
app:layout_constraintBottom_toBottomOf="@ id/cardStart"
app:layout_constraintEnd_toStartOf="@ id/cardStart"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@ id/cardStart">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:gravity="center"
android:orientation="vertical"
android:text="Option B"
android:textAlignment="center"
android:textStyle="bold"
app:drawableTopCompat="@drawable/ic_chats" />
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@ id/cardSettings"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_row="0"
android:layout_rowWeight="1"
android:layout_column="2"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:layout_marginEnd="20dp"
android:foreground="?selectableItemBackground"
app:cardCornerRadius="8dp"
app:cardElevation="8dp"
app:cardUseCompatPadding="true"
app:layout_constraintBottom_toBottomOf="@ id/cardStart"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@ id/cardStart"
app:layout_constraintTop_toTopOf="@ id/cardStart">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:gravity="center"
android:orientation="vertical"
android:text="Option C"
android:textAlignment="center"
android:textStyle="bold"
app:drawableTopCompat="@drawable/ic_chats" />
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@ id/cardStats"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_row="1"
android:layout_rowWeight="1"
android:layout_column="0"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:layout_marginStart="20dp"
android:foreground="?selectableItemBackground"
app:cardCornerRadius="8dp"
app:cardElevation="8dp"
app:cardUseCompatPadding="true"
app:layout_constraintBottom_toBottomOf="@ id/cardAbout"
app:layout_constraintEnd_toStartOf="@ id/cardAbout"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@ id/cardAbout">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:gravity="center"
android:orientation="vertical"
android:text="Option E"
android:textAlignment="center"
android:textStyle="bold"
app:drawableTopCompat="@drawable/ic_chats" />
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@ id/cardContact"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_row="1"
android:layout_rowWeight="1"
android:layout_column="1"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:layout_marginEnd="20dp"
android:foreground="?selectableItemBackground"
app:cardCornerRadius="8dp"
app:cardElevation="8dp"
app:cardUseCompatPadding="true"
app:layout_constraintBottom_toBottomOf="@ id/cardAbout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@ id/cardAbout"
app:layout_constraintTop_toTopOf="@ id/cardAbout">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:gravity="center"
android:orientation="vertical"
android:text="Option D"
android:textAlignment="center"
android:textStyle="bold"
app:drawableTopCompat="@drawable/ic_chats" />
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@ id/cardAbout"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_row="1"
android:layout_rowWeight="1"
android:layout_column="2"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:layout_marginTop="20dp"
android:foreground="?selectableItemBackground"
app:cardCornerRadius="8dp"
app:cardElevation="8dp"
app:cardUseCompatPadding="true"
app:layout_constraintBottom_toTopOf="@ id/cardStart"
app:layout_constraintEnd_toStartOf="@ id/cardContact"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@ id/cardStats"
app:layout_constraintTop_toBottomOf="@ id/title_view">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:gravity="center"
android:orientation="vertical"
android:text="Option F"
android:textAlignment="center"
android:textStyle="bold"
app:drawableTopCompat="@drawable/ic_chats" />
</androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout>
您可以在從 4k 電視到小型移動設備的所有設備中適應這種行為。手機和平板電腦截圖:


轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/490288.html
