4

ImageView クラスを使用して、GridView レイアウト内に 8x8 グリッドの画像 (実際には 40x40px のアイコン) をレイアウトしたいと考えています。

ImageView クラスのsetLayoutParamsおよびsetScaleTypeメソッドをいじってみましたが、目的の効果を得ることができませんでした。これが私が持っているものですが、コツをつかむまで、小さなアイコンの 3x3 グリッドのみを試しています。

主な活動:

package com.topherwilso.ropasci;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.GridView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        GridView gv = (GridView) findViewById(R.id.gridview);
        gv.setAdapter(new ImageAdapter(getApplicationContext()));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

そして私の ImageAdapter クラス:

package com.topherwilso.ropasci;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;

public class ImageAdapter extends BaseAdapter {

    int[] images = {
            R.drawable.one, R.drawable.two,
            R.drawable.three, R.drawable.four,
            R.drawable.five, R.drawable.six,
            R.drawable.seven, R.drawable.eight,
            R.drawable.nine
    };
    private Context context;

    public ImageAdapter(Context applicationContext){
        context=applicationContext;
    }

    @Override
    public int getCount() {
        //Number of data elements to be displayed
        return images.length;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView iv;
        if(convertView != null){
            iv = (ImageView) convertView;
        }
        else{
            iv = new ImageView(context);
            iv.setLayoutParams(new GridView.LayoutParams(120, 120));
            iv.setScaleType(ScaleType.CENTER);
            iv.setPadding(0, 0, 0, 0);
        }
        iv.setImageResource(images[position]);
        return iv;
    }

}

これが今の姿です、

私が今持っているもの

これは私が望むものです、

ここに画像の説明を入力

4

1 に答える 1