我的Android布局设计在仿真器上运行时不在同一位置,并显示它们位置不正确

我的Android布局设计在仿真器上运行时不在同一位置,并显示它们位置不正确

问题描述:

我正在使用Android 2.3.3版本并在其上制作一个tic tac toe游戏。在设计布局时,我遇到了布局对象的问题,并且游戏的游戏状态也有问题。 任何帮助将是伟大的!我的Android布局设计在仿真器上运行时不在同一位置,并显示它们位置不正确

看我下面的布局 enter image description here

下面的图片是我的XML代码:

<?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" 
    tools:context="com.sherzod.ion.tictactoeandroid.MainActivity"> 

    <GridLayout 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_marginBottom="46dp" 
     android:layout_marginEnd="1dp" 
     android:layout_marginLeft="1dp" 
     android:layout_marginRight="1dp" 
     android:layout_marginStart="1dp" 
     android:layout_marginTop="46dp" 
     android:background="@drawable/board" 
     android:columnCount="3" 
     android:rowCount="3" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintHorizontal_bias="0.0" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintVertical_bias="0.0" 
     tools:layout_constraintBottom_creator="1" 
     tools:layout_constraintLeft_creator="1" 
     tools:layout_constraintRight_creator="1" 
     tools:layout_constraintTop_creator="1"> 

     <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/imageView5" 
      android:layout_width="90dp" 
      android:layout_height="90dp" 
      android:layout_column="1" 
      android:layout_marginBottom="10dp" 
      android:layout_marginLeft="20dp" 
      android:layout_marginRight="10dp" 
      android:layout_marginTop="10dp" 
      android:layout_row="0" 
      android:onClick="dropIn" 
      android:tag="1"/> 

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

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

     <ImageView 
      android:id="@+id/imageView10" 
      android:layout_width="90dp" 
      android:layout_height="90dp" 
      android:layout_column="1" 
      android:layout_marginBottom="10dp" 
      android:layout_marginLeft="20dp" 
      android:layout_marginRight="10dp" 
      android:layout_marginTop="40dp" 
      android:layout_row="1" 
      android:onClick="dropIn" 
      android:tag="4" 
      tools:ignore="RtlHardcoded" /> 

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

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

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

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

    </GridLayout> 
</android.support.constraint.ConstraintLayout> 

这是我的主要活动文件:

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ImageView; 

public class MainActivity extends AppCompatActivity { 

    // 0 = yellow ; 1 = red; 
    int activePlayer = 0; 

    // ** 2 means unplayed 
    int[] gameState = {2, 2, 2, 2, 2, 2, 2, 2, 2}; 


    public void dropIn(View view) { 

     ImageView counter = (ImageView) view; 

     System.out.println(counter.getTag().toString()); 

     int tappedCounter = Integer.parseInt(counter.getTag().toString()); 


     if(gameState[tappedCounter] == 2) { 
      gameState[tappedCounter] = activePlayer; 
     } 

     counter.setTranslationY(-1000f); 

     if(activePlayer == 0) { 
      counter.setImageResource(R.drawable.yellow); 
      activePlayer = 1; 

     }else { 
      counter.setImageResource(R.drawable.red); 
      activePlayer = 0; 
     } 



     counter.animate().translationYBy(1000f).rotation(360).setDuration(200); 

    } 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
} 

我已经做了一些改动你的布局:

  • 新增columnWeightrowWeight到每个网格项目
  • 新增layout_gravityfill到每个网格项目

检查以下xml

<?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"> 

<GridLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/board" 
    android:layout_marginBottom="46dp" 
    android:layout_marginEnd="1dp" 
    android:layout_marginLeft="1dp" 
    android:layout_marginRight="1dp" 
    android:layout_marginStart="1dp" 
    android:layout_marginTop="46dp" 
    android:columnCount="3" 
    android:rowCount="3" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintHorizontal_bias="0.0" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="parent" 
    app:layout_constraintVertical_bias="0.0" 
    tools:layout_constraintBottom_creator="1" 
    tools:layout_constraintLeft_creator="1" 
    tools:layout_constraintRight_creator="1" 
    tools:layout_constraintTop_creator="1"> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:layout_gravity="fill" 
     android:layout_marginBottom="10dp" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:layout_marginTop="10dp" 
     android:onClick="dropIn" 
     android:src="@mipmap/ic_launcher" 
     android:tag="0" /> 

    <ImageView 
     android:id="@+id/imageView5" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:layout_gravity="fill" 
     android:layout_marginBottom="10dp" 
     android:layout_marginLeft="20dp" 
     android:layout_marginRight="10dp" 
     android:layout_marginTop="10dp" 
     android:onClick="dropIn" 
     android:src="@mipmap/ic_launcher" 
     android:tag="1" /> 

    <ImageView 
     android:id="@+id/imageView6" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:layout_gravity="fill" 
     android:layout_marginLeft="20dp" 
     android:layout_marginTop="10dp" 
     android:onClick="dropIn" 
     android:src="@mipmap/ic_launcher" 
     android:tag="2" /> 

    <ImageView 
     android:id="@+id/imageView9" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:layout_gravity="fill" 
     android:layout_marginBottom="10dp" 
     android:layout_marginLeft="10dp" 
     android:layout_marginTop="40dp" 
     android:onClick="dropIn" 
     android:src="@mipmap/ic_launcher" 
     android:tag="3" /> 

    <ImageView 
     android:id="@+id/imageView10" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:layout_gravity="fill" 
     android:layout_marginBottom="10dp" 
     android:layout_marginLeft="20dp" 
     android:layout_marginRight="10dp" 
     android:layout_marginTop="40dp" 
     android:onClick="dropIn" 
     android:src="@mipmap/ic_launcher" 
     android:tag="4" 
     tools:ignore="RtlHardcoded" /> 

    <ImageView 
     android:id="@+id/imageView11" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:layout_gravity="fill" 
     android:layout_marginLeft="20dp" 
     android:layout_marginTop="40dp" 
     android:onClick="dropIn" 
     android:src="@mipmap/ic_launcher" 
     android:tag="5" /> 

    <ImageView 
     android:id="@+id/imageView12" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:layout_gravity="fill" 
     android:layout_marginLeft="10dp" 
     android:layout_marginTop="50dp" 
     android:onClick="dropIn" 
     android:src="@mipmap/ic_launcher" 
     android:tag="6" /> 

    <ImageView 
     android:id="@+id/imageView14" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:layout_gravity="fill" 
     android:layout_marginLeft="20dp" 
     android:layout_marginTop="50dp" 
     android:onClick="dropIn" 
     android:src="@mipmap/ic_launcher" 
     android:tag="7" /> 

    <ImageView 
     android:id="@+id/imageView13" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:layout_gravity="fill" 
     android:layout_marginLeft="20dp" 
     android:layout_marginTop="50dp" 
     android:onClick="dropIn" 
     android:src="@mipmap/ic_launcher" 
     android:tag="8" /> 

</GridLayout> 
</android.support.constraint.ConstraintLayout> 
+0

遗憾,但是当我在模拟器上运行它,它是一切搞砸! – Sherzod

+0

我也在模拟器上进行了检查,但没有使用'GridLayout'背景。你可以检查没有'GridLayout'背景吗? –

+0

你是否知道为什么拖放功能不按预期定位项目,或者我应该进行任何配置以使布局设计视图在仿真器上运行时看起来相同? – Sherzod