在 GridView 中旋转时 ImageView 边缘被切断
ImageView edges get cut off while rotating in GridView
我正在 Android 制作记忆游戏。
我决定将 GridView 与适配器一起使用,它会在每个单元格内膨胀图像。
问题是第一行的图像在绕 y 轴 3D 旋转时被剪切,
像这样:
最后一行的图像不会发生这种情况。
我设法避免这种行为的唯一方法是增加每个图像的填充,但布局会改变太多。我还尝试向 GridView 添加顶部填充 and/or 边距,但这没有帮助。
有什么方法可以在没有这个问题的情况下先旋转图像吗?
这是我的布局代码:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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"
android:background="@color/colorPrimary"
tools:context="com.example.alen.matchinggameaddiko.activities.GameActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="150dp"
android:layout_height="0px"
android:layout_marginLeft="26dp"
android:layout_marginTop="0dp"
android:src="@drawable/addiko_logo_white"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<GridView
android:id="@+id/grid_game"
android:layout_width="0px"
android:layout_height="0px"
android:layout_marginBottom="10dp"
android:layout_marginEnd="@dimen/gridImagesMarginLeft"
android:layout_marginStart="@dimen/gridImagesMarginRight"
android:numColumns="4"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView" />
</android.support.constraint.ConstraintLayout>
谢谢!
你试过ViewGroup.setClipChildren(false)了吗?旋转看起来像是离开了 ViewGroup 的边界。
在我遇到同样问题的 RecyclerView
中,起作用的是在 RecyclerView
中添加 android:clipChildren="false"
并在适配器的根布局中添加 android:clipToPadding="false"
RecyclerView
.
我正在 Android 制作记忆游戏。 我决定将 GridView 与适配器一起使用,它会在每个单元格内膨胀图像。
问题是第一行的图像在绕 y 轴 3D 旋转时被剪切,
像这样:
最后一行的图像不会发生这种情况。 我设法避免这种行为的唯一方法是增加每个图像的填充,但布局会改变太多。我还尝试向 GridView 添加顶部填充 and/or 边距,但这没有帮助。 有什么方法可以在没有这个问题的情况下先旋转图像吗? 这是我的布局代码:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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"
android:background="@color/colorPrimary"
tools:context="com.example.alen.matchinggameaddiko.activities.GameActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="150dp"
android:layout_height="0px"
android:layout_marginLeft="26dp"
android:layout_marginTop="0dp"
android:src="@drawable/addiko_logo_white"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<GridView
android:id="@+id/grid_game"
android:layout_width="0px"
android:layout_height="0px"
android:layout_marginBottom="10dp"
android:layout_marginEnd="@dimen/gridImagesMarginLeft"
android:layout_marginStart="@dimen/gridImagesMarginRight"
android:numColumns="4"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView" />
</android.support.constraint.ConstraintLayout>
谢谢!
你试过ViewGroup.setClipChildren(false)了吗?旋转看起来像是离开了 ViewGroup 的边界。
在我遇到同样问题的 RecyclerView
中,起作用的是在 RecyclerView
中添加 android:clipChildren="false"
并在适配器的根布局中添加 android:clipToPadding="false"
RecyclerView
.