GridView的项目是太小了 - Android电子 [英] GridView items are too small - 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:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人: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_centerHorizontal =真
机器人:horizontalSpacing =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屋!