GridView цветных квадратов - Android - PullRequest
2 голосов
/ 24 июля 2011

Я хочу создать GridView, который содержит случайно окрашенные квадраты, и я хочу поместить его в RelativeLayout, чтобы кнопки над и под сеткой могли изменять состояние сетки (то есть цвета определенных квадратов). У меня проблемы с выяснением, как создать эти цветные квадраты и поместить их в сетку.

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gameLayout"
android:orientation="vertical" 
android:layout_width="fill_parent"
android:layout_height="fill_parent" 
>

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/colorGrid"
    android:layout_width="200dip" 
    android:layout_height="200dip"
    android:columnWidth="90dip"
    android:numColumns="auto_fit"
    android:verticalSpacing="0.0dip"
    android:horizontalSpacing="0.0dip"
    android:layout_centerHorizontal="true" />

<Button 
    android:id="@+id/redButton"
    android:layout_width="75dip"
    android:layout_height="75dip"
    android:text="RED"
    android:layout_centerHorizontal="true"
    android:layout_weight="1.0"
    android:layout_below="@id/colorGrid" />

<Button
    android:id="@+id/yellowButton"
    android:layout_width="75dip"
    android:layout_height="75dip"
    android:text="YELLOW"
    android:layout_weight="1.0"
    android:layout_centerHorizontal="true"
    android:layout_below="@id/redButton" />

<Button
    android:id="@+id/greenButton"
    android:layout_width="75dip"
    android:layout_height="75dip"
    android:text="GREEN"
    android:layout_weight="1.0"
    android:layout_toLeftOf="@id/redButton" 
    android:layout_below="@id/colorGrid" />

<Button
    android:id="@+id/lightBlueButton"
    android:layout_width="75dip"
    android:layout_height="75dip"
    android:text="LIGHT BLUE"
    android:layout_weight="1.0"
    android:layout_toRightOf="@id/redButton" 
    android:layout_below="@id/colorGrid" />

<Button
    android:id="@+id/darkBlueButton"
    android:layout_width="75dip"
    android:layout_height="75dip"
    android:text="DARK BLUE"
    android:layout_weight="1.0"
    android:layout_toLeftOf="@id/redButton" 
    android:layout_below="@id/redButton" />

<Button
    android:id="@+id/purpleButton"
    android:layout_width="75dip"
    android:layout_height="75dip"
    android:text="PURPLE"
    android:layout_weight="1.0"
    android:layout_toRightOf="@id/redButton" 
    android:layout_below="@id/redButton" />



</RelativeLayout>

Я хочу, чтобы квадраты были рядом друг с другом, поэтому я уменьшил вертикальный и горизонтальный интервал в сетке до 0 каждый.

Должен ли я создавать эти квадраты программно и использовать какой-нибудь адаптер для добавления их в сетку? Мне просто нужна помощь, чтобы начать. Спасибо!

Код класса моего адаптера:

import android.content.Context;
import android.graphics.Color;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;

public class GameAdapter extends BaseAdapter{
private Context mContext;

public GameAdapter(Context c){
    mContext = c;
}

public int getCount() {

    return 10;
}

@Override
public Object getItem(int position) {

    return null;
}

@Override
public long getItemId(int position) {

    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view;
    if(convertView==null){
        view=new View(mContext);
    }else{
        view = (View) convertView;
    }
    view.setBackgroundColor(Color.rgb((int)(Math.random()*255), (int)(Math.random()*255), (int)(Math.random()*255)));
    return view;
}

}

Звонок в моем классе деятельности:

setContentView(R.layout.gamelayout);
GridView gridView = (GridView)findViewById(R.id.colorGrid);
gridView.setAdapter(new GameAdapter(TheActivity.this));

Ответы [ 2 ]

1 голос
/ 24 июля 2011

gridview уже возвращает сетку квадратов. Таким образом, вы можете изменить цвет каждого квадрата из адаптера.

public int getCount() {

    return 10;
}

private int r,g,b;
r=Rand with bounds [0,255]
g=...
b=....

public View getView(int position, View convertView, ViewGroup parent) {


   View view;
    view=new ImageView(mContext);
    view.setBackgroundColor(Color.rgb(r, g, b));

return view;
0 голосов
/ 31 августа 2014

Я знаю, что это старый пост, но поменяйте адаптер getwirewire тоже:

    public View getView(int position, View convertView, ViewGroup parent) {     
        if (convertView == null) {   
            convertView = new ImageView(context);
            convertView.setMinimumHeight(32);
            convertView.setMinimumWidth(32);

        }
        ((ImageView)convertView).setImageDrawable(new ColorDrawable((int) getItem(position)));
        return convertView;     
    } 
...