2017-05-07 6 views
0

Ich habe ein Rasterlayout mit 3 Spalten und 3 Zeilen. Für die erste Zeile und alle drei Spalten habe ich ein lineares Layout und für die nächsten zwei Zeilen habe ich ein lineares Layout. Jedes lineare Layout hat 3 Bilder mit Spalten 0,1,2 in jedem linearen Layout. Ich möchte das Bild unscharf stellen, sobald der "Wieder abspielen" -Knopf angeklickt wurde. Momentan erhalte ich jedoch einen Fehler. Mein Code ist wie folgt: activity_main.xmlZurücksetzen der Raster innerhalb linearer Layouts innerhalb des Rasterlayouts

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="16dp" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" 
    android:paddingTop="16dp" 
    tools:context="com.example.user.tic_tac_toe.MainActivity"> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="100dp" 
     android:background="#ccc" 
     android:padding="15dp" 
     android:visibility="visible" 
     android:id="@+id/playAgainLayout" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:inputType="textPersonName" 
      android:text="TIC-TAC-TOE" 
      android:gravity="center" 
      android:ems="10" 
      android:id="@+id/winnerMessage" 
      android:textSize="30sp" /> 

     <Button 
      android:text="Play Again" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/playAgainButton" 
      android:gravity="center" 
      android:background="@color/colorAccent" 
      android:onClick="playAgain" 
      android:visibility="invisible"/> 
    </LinearLayout> 

    <GridLayout 
     android:layout_width="wrap_content" 
     android:columnCount="3" 
     android:rowCount="3" 
     android:background="@drawable/board" 
     android:id="@+id/grid" 
     android:layout_height="360dp" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true"> 
     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="120dp" 
      android:layout_weight="1" 
      android:visibility="visible" 
      android:id="@+id/temp" 
      android:layout_columnSpan="3" 
      > 

      <ImageView 
       android:layout_height="120dp" 
       android:layout_width="0dp" 
       android:layout_weight="1" 
       android:padding="25dp" 
       android:id="@+id/imageView1" 
       android:layout_row="0" 
       android:layout_column="0" 
       android:onClick="dropIn" 
       android:tag="0" 
       /> 

      <ImageView 
       android:layout_height="120dp" 
       android:layout_width="0dp" 
       android:layout_weight="1.01" 
       android:padding="25dp" 
       android:id="@+id/imageView2" 
       android:layout_row="0" 
       android:layout_column="1" 
       android:onClick="dropIn" 
       android:tag="1" 
       /> 

      <ImageView 
       android:layout_height="120dp" 
       android:layout_width="0dp" 
       android:layout_weight="1" 
       android:padding="25dp" 
       android:id="@+id/imageView3" 
       android:layout_row="0" 
       android:layout_column="2" 
       android:onClick="dropIn" 
       android:tag="2" 
       /> 

     </LinearLayout> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="120dp" 
      android:layout_weight="1" 
      android:visibility="visible" 
      android:id="@+id/temp3" 
      android:layout_columnSpan="3" 
      > 

      <ImageView 
       android:layout_height="120dp" 
       android:layout_width="0dp" 
       android:layout_weight="1" 
       android:padding="25dp" 
       android:id="@+id/imageView4" 
       android:layout_row="1" 
       android:layout_column="0" 
       android:onClick="dropIn" 
       android:tag="3" 
       /> 

      <ImageView 
       android:layout_height="120dp" 
       android:layout_width="0dp" 
       android:layout_weight="1" 
       android:padding="25dp" 
       android:id="@+id/imageView5" 
       android:layout_row="1" 
       android:layout_column="1" 
       android:onClick="dropIn" 
       android:tag="4"/> 

      <ImageView 
       android:layout_height="120dp" 
       android:layout_width="0dp" 
       android:layout_weight="1" 
       android:padding="25dp" 
       android:id="@+id/imageView6" 
       android:layout_row="1" 
       android:layout_column="2" 
       android:onClick="dropIn" 
       android:tag="5" 
       /> 

     </LinearLayout> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_weight="1" 
      android:layout_height="120dp" 
      android:visibility="visible" 
      android:id="@+id/temp2" 
      android:layout_columnSpan="3" 
      > 
      <ImageView 
       android:layout_height="120dp" 
       android:layout_width="0dp" 
       android:layout_weight="1" 
       android:padding="25dp" 
       android:id="@+id/imageView7" 
       android:layout_row="2" 
       android:layout_column="0" 
       android:onClick="dropIn" 
       android:tag="6" 
       /> 

      <ImageView 
       android:layout_height="120dp" 
       android:layout_width="0dp" 
       android:layout_weight="1" 
       android:padding="25dp" 
       android:id="@+id/imageView8" 
       android:layout_row="2" 
       android:layout_column="1" 
       android:onClick="dropIn" 
       android:tag="7" 
       /> 

      <ImageView 
       android:layout_height="120dp" 
       android:layout_width="0dp" 
       android:layout_weight="1" 
       android:padding="25dp" 
       android:id="@+id/imageView9" 
       android:layout_row="2" 
       android:layout_column="2" 
       android:onClick="dropIn" 
       android:tag="8" 
       /> 
     </LinearLayout> 
    </GridLayout> 
</RelativeLayout> 

Meine playAgain Funktion ist wie folgt:

public void playAgain(View view){ 

     active = true; 

     Button button = (Button)findViewById(R.id.playAgainButton); 
     button.setVisibility(View.INVISIBLE); 
     TextView text = (TextView)findViewById(R.id.winnerMessage); 
     text.setText("TIC-TAC-TOE"); 
     activePlayer = 0; 
     for(int i=0; i<currentState.length; i++){ 
      currentState[i] = 2; 
     } 
     //changing the image of imageviews in grid layout 
     GridLayout grid = (GridLayout)findViewById(R.id.grid); 
     grid.removeAllViews(); 
     for(int i=0; i<grid.getChildCount(); i++){ 
      ((ImageView) grid.getChildAt(i)).setImageResource(0); 
     } 

    } 

PS: Mein Programm läuft ist in Ordnung, wenn ich die linearen Layouts entfernen und nur nach innen setzen imageviews das Rasterlayout. Ich nehme an, dass dies eine Ausnahme beim Zugriff auf das Bild innerhalb des linearen Layouts beim Zurücksetzen ist. Fehler bei dieser Zeile auftretenden

((ImageView) grid.getChildAt(i)).setImageResource(0); 

Antwort

0

Nevermind, dachte ich es aus. Um auf Elemente innerhalb eines Layouts zuzugreifen, müssen Sie dies tun.

GridLayout grid = (GridLayout)findViewById(R.id.grid); 
     for(int i=0; i<grid.getChildCount(); i++){ 
      System.out.println(grid.getColumnCount()); 
      LinearLayout ll = (LinearLayout) grid.getChildAt(i); 
      for(int k=0; k<ll.getChildCount(); k++){ 
       System.out.println(ll.getChildAt(k)); 
       ((ImageView) ll.getChildAt(k)).setImageResource(0); 

mit entsprechenden Casting.

Verwandte Themen