Android 使用gridlayout的图像对齐问题

Android 使用gridlayout的图像对齐问题,android,layout,grid,Android,Layout,Grid,当我将APK导出到手机进行测试时,我对图片的对齐有一些问题。路线完全不同,不在网格内 <?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://sche

当我将APK导出到手机进行测试时,我对图片的对齐有一些问题。路线完全不同,不在网格内

<?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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="sg.edu.rp.c346.tictactoee.MainActivity"
    tools:showIn="@layout/activity_main">

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

        <ImageView
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:id="@+id/imageView0"
            android:layout_row="0"
            android:layout_column="0"
            android:onClick="gameLogic"
            android:tag="0"
            android:layout_marginLeft="0dp"
            android:layout_marginTop="50dp" />

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

        <ImageView
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:id="@+id/imageView2"
            android:layout_row="0"
            android:layout_column="2"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="50dp"
            android:onClick="gameLogic"
            android:tag="2" />

        <ImageView
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:id="@+id/imageView3"
            android:layout_row="1"
            android:layout_column="0"
            android:layout_marginLeft="0dp"
            android:layout_marginTop="50dp"
            android:onClick="gameLogic"
            android:tag="3"/>

        <ImageView
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:id="@+id/imageView4"
            android:layout_row="1"
            android:layout_column="1"
            android:layout_marginTop="50dp"
            android:layout_marginLeft="7dp"
            android:onClick="gameLogic"
            android:tag="4"/>

        <ImageView
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:id="@+id/imageView5"
            android:layout_row="1"
            android:layout_column="2"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="50dp"
            android:onClick="gameLogic"
            android:tag="5"/>

        <ImageView
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:id="@+id/imageView6"
            android:layout_row="2"
            android:layout_column="0"
            android:layout_marginLeft="0dp"
            android:layout_marginTop="30dp"
            android:onClick="gameLogic"
            android:tag="6"/>

        <ImageView
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:id="@+id/imageView7"
            android:layout_row="2"
            android:layout_column="1"
            android:layout_marginTop="30dp"
            android:layout_marginLeft="7dp"
            android:onClick="gameLogic"
            android:tag="7"/>

        <ImageView
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:id="@+id/imageView8"
            android:layout_row="2"
            android:layout_column="2"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="30dp"
            android:onClick="gameLogic"
            android:tag="8"/>

    </GridLayout>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:background="#1eccd5"
        android:padding="35dp"
        android:id="@+id/winnerLayout">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:id="@+id/textView"
            android:textColor="#FFFFFFFF" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Play Again"
            android:id="@+id/button"
            android:onClick="playAgain" />
    </LinearLayout>

</RelativeLayout>

它使用android studio显示如下:


然而,当我将其导出到我的android手机时,对齐方式完全改变,并且脱离了网格,有人能帮助我吗?

我想你是新来的
android
。 Android在您的设备上创建任何
视图(屏幕)
时使用设备的尺寸。 Android支持不同的维度,比如

  • hdpi
  • xhdpi
  • xxhdpi
  • xxxhdpi等
  • 所以,对于您的情况,Android系统尝试以您给定的绝对大小容纳所有视图

    我建议对视图的
    宽度
    高度
    使用
    wrap\u content

    您可以按如下方式修改布局文件:

    <?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"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:paddingBottom="@dimen/activity_vertical_margin"
                    android:paddingLeft="@dimen/activity_horizontal_margin"
                    android:paddingRight="@dimen/activity_horizontal_margin"
                    android:paddingTop="@dimen/activity_vertical_margin"
                    app:layout_behavior="@string/appbar_scrolling_view_behavior">
    
        <GridLayout
            android:id="@+id/gridLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:columnCount="4"
            android:rowCount="3">
    
            <ImageView
                android:id="@+id/imageView0"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_column="0"
                android:layout_row="0"
                android:onClick="gameLogic"
                android:padding="30dp"
                android:src="@android:drawable/ic_menu_add"
                android:tag="0"/>
    
            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_column="1"
                android:layout_row="0"
                android:onClick="gameLogic"
                android:padding="30dp"
                android:src="@android:drawable/ic_menu_add"
                android:tag="1"/>
    
            <ImageView
                android:id="@+id/imageView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_column="2"
                android:layout_row="0"
                android:onClick="gameLogic"
                android:padding="30dp"
                android:src="@android:drawable/ic_menu_add"
                android:tag="2"/>
    
            <ImageView
                android:id="@+id/imageView3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_column="0"
                android:layout_row="1"
                android:onClick="gameLogic"
                android:padding="30dp"
                android:src="@android:drawable/ic_menu_add"
                android:tag="3"/>
    
            <ImageView
                android:id="@+id/imageView4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_column="1"
                android:layout_row="1"
                android:onClick="gameLogic"
                android:padding="30dp"
                android:src="@android:drawable/ic_menu_add"
                android:tag="4"/>
    
            <ImageView
                android:id="@+id/imageView5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_column="2"
                android:layout_row="1"
                android:onClick="gameLogic"
                android:padding="30dp"
                android:src="@android:drawable/ic_menu_add"
                android:tag="5"/>
    
            <ImageView
                android:id="@+id/imageView6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_column="0"
                android:layout_row="2"
                android:onClick="gameLogic"
                android:padding="30dp"
                android:src="@android:drawable/ic_menu_add"
                android:tag="6"/>
    
            <ImageView
                android:id="@+id/imageView7"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_column="1"
                android:layout_row="2"
                android:onClick="gameLogic"
                android:padding="30dp"
                android:src="@android:drawable/ic_menu_add"
                android:tag="7"/>
    
            <ImageView
                android:id="@+id/imageView8"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_column="2"
                android:layout_row="2"
                android:onClick="gameLogic"
                android:padding="30dp"
                android:src="@android:drawable/ic_menu_add"
                android:tag="8"/>
    
        </GridLayout>
    
        <LinearLayout
            android:id="@+id/winnerLayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:background="#1eccd5"
            android:orientation="vertical"
            android:padding="35dp"
            android:visibility="gone">
    
            <TextView
                android:id="@+id/textView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textColor="#FFFFFFFF"/>
    
            <Button
                android:id="@+id/button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="playAgain"
                android:text="Play Again"/>
        </LinearLayout>
    
    </RelativeLayout>
    
    
    
    您可以根据需要更改
    padding
    src

    如果不同,请添加您想要的图像


    有关详细信息,请检查此项。

    在图像视图中添加填充

    android:padding="10dp"
    
    例如:

      <ImageView
                android:layout_width="90dp"
                android:layout_height="90dp"
                android:id="@+id/imageView0"
                android:layout_row="0"
                android:layout_column="0"
                android:padding="10dp"
                android:onClick="gameLogic"
                android:tag="0"
                android:layout_marginLeft="0dp"
                android:layout_marginTop="50dp" />
    
    
    
    这将解决您的问题。

    • 将GridLayout更改为android.support.v7.widget.GridLayout
    • app:columnCount="3"
      app:rowCount="3"
      
      到GridView

    • 关于ImageView的使用

      app:layout_columnWeight="1"
      app:layout_rowWeight="1"
      
    而不是

        android:layout_width="90dp"
        android:layout_height="90dp"
    
    xml文件如下所示

    <android.support.v7.widget.GridLayout
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="500dp"
        app:columnCount="3"
        app:orientation="horizontal"
        app:rowCount="3"
        app:useDefaultMargins="true">
    
            <ImageView
                app:layout_columnWeight="1"
                app:layout_rowWeight="1"
                android:id="@+id/imageView0"
                android:tag="0"
                android:background="#ff0000" />
    
            <ImageView
                app:layout_columnWeight="1"
                app:layout_rowWeight="1"
                android:id="@+id/imageView1"
                android:onClick="gameLogic"
                android:tag="1"
                android:background="#ff0000"/>
    
            <ImageView
                app:layout_columnWeight="1"
                app:layout_rowWeight="1"
                android:id="@+id/imageView2"
                android:background="#ff0000"
                android:onClick="gameLogic"
                android:tag="2" />
    
            <ImageView
                app:layout_columnWeight="1"
                app:layout_rowWeight="1"
                android:id="@+id/imageView3"
                android:background="#ff0000"
                android:onClick="gameLogic"
                android:tag="3"/>
    
            <ImageView
                app:layout_columnWeight="1"
                app:layout_rowWeight="1"
                android:id="@+id/imageView4"
                android:background="#ff0000"
                android:onClick="gameLogic"
                android:tag="4"/>
    
            <ImageView
                app:layout_columnWeight="1"
                app:layout_rowWeight="1"
                android:id="@+id/imageView5"
                android:background="#ff0000"
                android:onClick="gameLogic"
                android:tag="5"/>
    
            <ImageView
                app:layout_columnWeight="1"
                app:layout_rowWeight="1"
                android:id="@+id/imageView6"
                android:background="#ff0000"
                android:onClick="gameLogic"
                android:tag="6"/>
    
            <ImageView
                app:layout_columnWeight="1"
                app:layout_rowWeight="1"
                android:id="@+id/imageView7"
                android:background="#ff0000"
                android:onClick="gameLogic"
                android:tag="7"/>
    
            <ImageView
                app:layout_columnWeight="1"
                app:layout_rowWeight="1"
                android:id="@+id/imageView8"
                android:background="#ff0000"
                android:onClick="gameLogic"
                android:tag="8"/>
    
        </android.support.v7.widget.GridLayout>
    

    请共享您的适配器类。