在LinearLayout

时间:2017-06-21 10:55:33

标签: android android-layout

我正在开发Android卡游戏。 我想显示所有玩家卡片,所以我创建了4个LinearLayouts。 1为顶级球员,左侧球员,右侧球员和底部球员。

我正在尝试使用相同的图像作为卡片,因此我尝试旋转侧面球员(左右球员)的牌。

出于某种原因,顶级和底级球员牌看起来不错,但是侧面球员牌太小了。

这是我的左侧球员布局:

 <LinearLayout
        android:id="@+id/leftParentLayout"
        android:layout_width="80dp"
        android:layout_height="200dp"
        android:orientation="vertical"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0.026"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.381">

        <ImageView
            android:id="@+id/player_left_card_3"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center_vertical|center_horizontal"
            android:layout_weight="1"
            android:clickable="false"
            android:paddingBottom="1dp"
            android:paddingEnd="1dp"
            android:paddingLeft="1dp"
            android:paddingRight="1dp"
            android:rotation="90" />

        <ImageView
            android:id="@+id/player_left_card_5"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center_vertical|center_horizontal"
            android:layout_weight="1"
            android:clickable="false"
            android:paddingBottom="1dp"
            android:paddingEnd="1dp"
            android:paddingLeft="1dp"
            android:paddingRight="1dp"
            android:rotation="90" />

        <ImageView
            android:id="@+id/player_left_card_1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center_vertical|center_horizontal"
            android:layout_weight="1"
            android:clickable="false"
            android:paddingBottom="1dp"
            android:paddingEnd="1dp"
            android:paddingLeft="1dp"
            android:paddingRight="1dp"
            android:rotation="90" />

        <ImageView
            android:id="@+id/player_left_card_2"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center_vertical|center_horizontal"
            android:layout_weight="1"
            android:clickable="false"
            android:paddingBottom="1dp"
            android:paddingEnd="1dp"
            android:paddingLeft="1dp"
            android:paddingRight="1dp"
            android:rotation="90" />

        <ImageView
            android:id="@+id/player_left_card_4"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center_vertical|center_horizontal"
            android:layout_weight="1"
            android:clickable="false"
            android:paddingBottom="1dp"
            android:paddingEnd="1dp"
            android:paddingLeft="1dp"
            android:paddingRight="1dp"
            android:rotation="90" />

    </LinearLayout>

虽然高度应为200且宽度为80,但卡片较小。 我怀疑在旋转之前计算了卡的大小,然后旋转会以某种方式缩小它们,看起来左边玩家的牌宽与顶级玩家的宽度相同,但由于旋转它应该更大。 / p>

如何旋转卡片,但保持原始尺寸? 感谢。

以下是游戏的截图。

Screenshot from the game

1 个答案:

答案 0 :(得分:0)

  

我怀疑卡片尺寸是在旋转之前计算的,然后旋转会以某种方式收缩它们。

我认为这可能是错的。 Android计算最终的宽度和高度测量值并适应布局。因为它关注的是它最终显示的内容,它引用了你提到的属性。

尝试wrap_content的{​​{1}}中的个人卡片的宽度或高度或两者都给予ImageView -

android:layout_width="wrap_content"
android:layout_height="wrap_content"

另请注意200dp应该容纳所有5张卡片宽度加上您拥有的填充(每张卡2dp)。并且80dp宽度应该适应卡的高度加上2dp填充。否则为layout_width提供更高的layout_heightLinearLayout