GridView的项目是太小了 - Android电子 [英] GridView items are too small - Android

查看:154
本文介绍了GridView的项目是太小了 - Android电子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我下面本教程,这是非常简单,但我的GridView的图像要比一个教程小得多。做任何事情脱颖而出错误code?下面,我包括我的主要活动,我的适配器类,我的 XML GridView控件

这应该是这样的:

相反,我的是这样的:

SitesActivity.java

 包org.azurespot.cutelinks;进口android.os.Bundle;
进口android.support.v7.app.ActionBarActivity;
进口android.view.Menu;
进口android.view.MenuItem;
进口android.widget.GridView;进口org.azurespot.R;公共类SitesActivity扩展ActionBarActivity {    私人GridView控件GridView控件;    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_sites);        //使用碎片,请确保您包括rootView发现ID时
        GridView控件=(GridView控件)findViewById(R.id.sites_grid);
        //设置适配器的GridView
        gridView.setAdapter(新GridViewSitesAdapter(本));
    }
    @覆盖
    公共布尔onCreateOptionsMenu(菜单菜单){
        //充气菜单;如果是present这增加了项目操作栏。
        。getMenuInflater()膨胀(R.menu.menu_sites,菜单);
        返回true;
    }    @覆盖
    公共布尔onOptionsItemSelected(菜单项项){
        //处理动作栏项目点击这里。操作栏会
        //自动处理上点击主页/向上按钮,只要
        //你在AndroidManifest.xml中指定一个父活动。
        INT ID = item.getItemId();        // noinspection SimplifiableIfStatement
        如果(ID == R.id.action_settings){
            返回true;
        }        返回super.onOptionsItemSelected(项目);
    }
}

GridViewSitesAdapter.java

 包org.azurespot.cutelinks;进口android.content.Context;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.BaseAdapter;
进口android.widget.GridView;
进口android.widget.ImageView;进口org.azurespot.R;/ **
 *创建者MIZU于15年2月11日。
 * /
公共类GridViewSitesAdapter延伸BaseAdapter {    公共语境mContext;    公共GridViewSitesAdapter(上下文C){
        mContext = C;
    }    //请阵列中的所有图片
    公共整数[] = mThumbIds {
            R.drawable.cute_overload,R.drawable.attack_of_the_cute,
            R.drawable.zoo_borns,R.drawable.cutest_paw,
            R.drawable.mochimochiland,R.drawable.baby_mugging,
            R.drawable.cutest_food,R.drawable.tiny_cute_things,
            R.drawable.etsy_robot_plush
    };    @覆盖
    公众诠释的getCount(){
        返回mThumbIds.length;
    }    @覆盖
    公共对象的getItem(INT位置){
        返回mThumbIds [位置]
    }    @覆盖
    众长getItemId(INT位置){
        返回0;
    }
    @覆盖
    公共查看getView(INT位置,查看convertView,父母的ViewGroup){        ImageView的ImageView的=新ImageView的(mContext);
        imageView.setImageResource(mThumbIds [位置]);
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setLayoutParams(新GridView.LayoutParams(70,70));
        返回ImageView的;    }
}

activity_sites.xml

 <的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    的xmlns:工具=htt​​p://schemas.android.com/tool​​s
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    工具:上下文=org.azurespot.cutelinks.SitesActivity
    机器人:背景=#2198bb>
    < GridView控件
        机器人:layout_width =FILL_PARENT
        机器人:layout_height =FILL_PARENT
        机器人:ID =@ + ID / sites_grid
        机器人:layout_centerVertical =真
        机器人:layout_centerHorizo​​ntal =真
        机器人:horizo​​ntalSpacing =10dp
        机器人:verticalSpacing =10dp
        机器人:layout_margin =10dp
        机器人:columnWidth时=90dp
        机器人:比重=中心
        机器人:为numColumns =auto_fit
        机器人:stretchMode =columnWidth时
        机器人:背景=@绘制/ button_border>        < / GridView的>< / RelativeLayout的>


解决方案

为什么你不只是计算gridview的项目基础上,屏幕宽度的宽度

  columnWidth时=(INT)((getScreenWidth() - ((AppConstant.NUM_OF_COLUMNS + 1)*填充))/ AppConstant.NUM_OF_COLUMNS);

希望code此示例行会帮助你理解。让我知道如果你需要它的任何帮助。

感谢:)

I am following this tutorial, it is very simple, and yet my GridView images are much much smaller than the one in the tutorial. Does anything stand out as wrong code? Below I've included my main activity, my adapter class, and my xml with the GridView.

It should be like this:

Instead, mine is like this:

SitesActivity.java

package org.azurespot.cutelinks;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.GridView;

import org.azurespot.R;

public class SitesActivity extends ActionBarActivity {

    private GridView gridView;

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

        // with fragments, make sure you include the rootView when finding id
        gridView = (GridView) findViewById(R.id.sites_grid);
        // Set the Adapter to GridView
        gridView.setAdapter(new GridViewSitesAdapter(this));
    }


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

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

GridViewSitesAdapter.java

package org.azurespot.cutelinks;

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 org.azurespot.R;

/**
 * Created by mizu on 2/11/15.
 */
public class GridViewSitesAdapter extends BaseAdapter {

    public Context mContext;

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

    // Keep all Images in array
    public Integer[] mThumbIds = {
            R.drawable.cute_overload, R.drawable.attack_of_the_cute,
            R.drawable.zoo_borns, R.drawable.cutest_paw,
            R.drawable.mochimochiland, R.drawable.baby_mugging,
            R.drawable.cutest_food, R.drawable.tiny_cute_things,
            R.drawable.etsy_robot_plush
    };

    @Override
    public int getCount() {
        return mThumbIds.length;
    }

    @Override
    public Object getItem(int position) {
        return mThumbIds[position];
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }


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

        ImageView imageView = new ImageView(mContext);
        imageView.setImageResource(mThumbIds[position]);
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setLayoutParams(new GridView.LayoutParams(70, 70));
        return imageView;

    }
}

activity_sites.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="org.azurespot.cutelinks.SitesActivity"
    android:background="#2198bb">


    <GridView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/sites_grid"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:horizontalSpacing="10dp"
        android:verticalSpacing="10dp"
        android:layout_margin="10dp"
        android:columnWidth="90dp"
        android:gravity="center"
        android:numColumns="auto_fit"
        android:stretchMode="columnWidth"
        android:background="@drawable/button_border">

        </GridView>

</RelativeLayout>

解决方案

Why don't you just calculate the width of gridview item based on the screenwidth

columnWidth = (int) ((getScreenWidth() - ((AppConstant.NUM_OF_COLUMNS + 1) * padding)) / AppConstant.NUM_OF_COLUMNS);

Hope this sample line of code will help you understand. Let me know if you need any help on it.

Thanks :)

这篇关于GridView的项目是太小了 - Android电子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆