根据屏幕尺寸定位图像(android)

时间:2017-11-30 20:24:28

标签: java android xml

我刚看了一个关于如何制作游戏的教程(tictactoe)。唯一的问题是在不同尺寸的手机上调整ImageViews的大小和重新定位。我搜索了它,有android:layout_weight,但这没有帮助?任何帮助非常感谢。

This is an image of the problem. I coded it to fit one screen, then I try a different phone and it shows me this. What it should look like is the blue selected box should be in the top right corner.

我的xml文件如下所示:

<GridLayout
    android:id="@+id/gridLayout"
    android:layout_width="match_parent"
    android:layout_height="360dp"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:background="@drawable/grid1"
    android:columnCount="3"
    android:rowCount="3">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_column="0"
        android:layout_marginBottom="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="10dp"
        android:layout_row="0"
        android:onClick="dropIn"
        android:tag="0" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_column="1"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="10dp"
        android:layout_row="0"
        android:onClick="dropIn"
        android:tag="1" />

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_column="1"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="20dp"
        android:layout_row="1"
        android:onClick="dropIn"
        android:tag="4" />

    <ImageView
        android:id="@+id/imageView3"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_column="2"
        android:layout_marginTop="10dp"
        android:layout_row="0"
        android:onClick="dropIn"
        android:tag="2" />


    <ImageView
        android:id="@+id/imageView4"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_column="2"
        android:layout_marginTop="20dp"
        android:layout_row="1"
        android:onClick="dropIn"
        android:tag="5" />

    <ImageView
        android:id="@+id/imageView5"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_column="0"
        android:layout_marginTop="20dp"
        android:layout_row="1"
        android:onClick="dropIn"
        android:tag="3" />


    <ImageView
        android:id="@+id/imageView6"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_column="2"
        android:layout_marginTop="40dp"
        android:layout_row="2"
        android:onClick="dropIn"
        android:tag="8" />

    <ImageView
        android:id="@+id/imageView7"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_column="0"
        android:layout_marginTop="40dp"
        android:layout_row="2"
        android:onClick="dropIn"
        android:tag="6" />

    <ImageView
        android:id="@+id/imageView8"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_column="1"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="40dp"
        android:layout_row="2"
        android:onClick="dropIn"
        android:tag="7" />

</GridLayout>

<Button
    android:id="@+id/resetButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginLeft="14dp"
    android:layout_marginStart="14dp"
    android:onClick="reset"
    android:text="Reset" />

<TextView
    android:id="@+id/score1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:text="Circle score:" />

<TextView
    android:id="@+id/score2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_marginEnd="27dp"
    android:layout_marginRight="27dp"
    android:text="Cross score:" />

<TextView
    android:id="@+id/winner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/score1"
    android:layout_toEndOf="@+id/resetButton"
    android:layout_toRightOf="@+id/resetButton" />

2 个答案:

答案 0 :(得分:0)

我猜你正在设置一个背景图像来制作tictactoe盒子(2个水平线和2个垂直线)。这将使您难以定位您的蓝盒子。你必须做的是自己创造这些线条。

{{1}}

这将创建一条垂直黑线。现在你需要为bluebox做的就是设置android:layout_toRightOf =&#34; @ id / vertical_line&#34;

答案 1 :(得分:0)

我会考虑使用GridView ImageViews。您可以将numColumns和numRows设置为3,并将其配置为在您遇到的任何屏幕尺寸上看起来都是正方形