0

Image1のようなグリッドビューを使用して、4つの画像でメインメニューアクティビティを作成しようとしています。しかし、画像はアクティビティのスペース全体を占めるわけではありません。Image2は私のグリッドビューを示しています。スクロールせずに4つの画像を揃え、Image1のようにすべての画面に合わせるにはどうすればよいですか?

Image1-私はこのように作ろうとしています

Image2-マイグリッドビュー-image1のように画面に合わせる方法

activity_main_menu.xml

<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/gridview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:numColumns="2"
    tools:context=".MainMenuActivity"
     />

MainMenuActivity.java

public class MainMenuActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main_menu);
            GridView gridView = (GridView) findViewById(R.id.gridview);
            gridView.setAdapter(new ImageAdapter(this));
    }
}

ImageAdapter.java

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

        ImageView imageView ;

        if(convertView==null)
        {
            imageView = new ImageView(mcontext);

            WindowManager wm = (WindowManager) mcontext.getSystemService(Context.WINDOW_SERVICE);

            Display display = wm.getDefaultDisplay();
            DisplayMetrics outMetrics = new DisplayMetrics ();
            display.getMetrics(outMetrics);

            float density  = mcontext.getResources().getDisplayMetrics().density;
            float dpHeight = outMetrics.heightPixels / density;
            float dpWidth  = outMetrics.widthPixels / density;

            int width=(int) (dpWidth/2);
            int height=(int) (dpHeight/2);


            imageView.setLayoutParams(new GridView.LayoutParams(parent.getWidth()/2,parent.getHeight()/2));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);

            //imageView.setLayoutParams(new GridView.LayoutParams(width,height));
            //imageView.setLayoutParams(new GridView.LayoutParams(imageView.getWidth(),imageView.getHeight()));
            //imageView.setBackgroundColor(000000);
            //imageView.setLayoutParams(new GridView.LayoutParams(400,200));
            //imageView.setLayoutParams(new GridView.LayoutParams());
            //imageView.setPadding(40,40,40,40);
        }
        else
        {
            imageView=(ImageView)convertView;
        }

        imageView.setImageResource(mThumbIds[position]);
        return imageView;
    }


    // references to our images
    private Integer[] mThumbIds = {
            R.drawable.mainmenu1, R.drawable.mainmenu2,
            R.drawable.mainmenu3, R.drawable.mainmenu4
    };
4

2 に答える 2

1

あなたのコードでこれをしてください:

 float density  = mcontext.getResources().getDisplayMetrics().density;
                float dpHeight = outMetrics.heightPixels / density;
                float dpWidth  = outMetrics.widthPixels / density;

                int width=(int) (dpWidth);
                int height=(int) (dpHeight);

                imageView.setLayoutParams(new GridView.LayoutParams(width,height));
                imageView.setBackgroundColor(000000);
                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);

それはすべての間隔の白黒画像を削除します。gridviewのスクロールを無効にすることができます。

ここにリンク

ここにリンク2

于 2013-02-25T06:38:43.743 に答える
1

グリッドビューの各アイテムを表す個別のレイアウトを指定する必要があります。ほとんどの場合、image1をエミュレートしようとしている場合は、RelativeLayoutを親として、ImageViewとTextViewを子として別のレイアウトを作成する必要があります。imageviewの高さと幅を親と一致するように設定し(パディングを使用)、TextViewを画像の上に配置します。

また、このカスタムビューを拡張し、データソース(画像とテキスト)をそれにバインドするようにアダプターを変更する必要があります。

于 2013-02-25T04:32:33.510 に答える