آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

استفاده از گریدویو بهینه برای تمامی گوشی ها

طاهر  12 سال پیش  11 سال پیش
+20 0

مثال زیر نحوه استفاده از گریدویو بهینه شده برای تمامی گوشی ها نمایش داده شده که تعداد ستون  بر حسب عرض صفحه نمایش گوشی تغییر میکنه

امیدوارم مفید واقع بشه

 package com.negahetazehco.testGridView;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.Toast;


public class testGridView extends Activity {

Integer[] imageIDs = {
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher
};


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

GridView gridView = (GridView) findViewById(R.id.gridview);
gridView.setAdapter(new ImageAdapter(this));

gridView.setOnItemClickListener(new OnItemClickListener()
{

@Override
public void onItemClick(AdapterView<?> parent,
View v, int position, long id)
{
Toast.makeText(getBaseContext(),
"pic" + (position + 1) + " selected",
Toast.LENGTH_SHORT).show();
}
});
}


public class ImageAdapter extends BaseAdapter
{

private Context context;


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


//---returns the number of images---
@Override
public int getCount() {
return imageIDs.length;
}


//---returns the ID of an item---
@Override
public Object getItem(int position) {
return position;
}


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


//---returns an ImageView view---
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(context);
imageView.setLayoutParams(new GridView.LayoutParams(96, 96));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(5, 5, 5, 5);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(imageIDs[position]);
return imageView;
}
}
} }

//main.xml

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:numColumns="auto_fit"
    android:verticalSpacing="10dp"
    android:horizontalSpacing="10dp"
    android:columnWidth="90dp"
    android:stretchMode="columnWidth"
    android:gravity="center"
/>
0 0
سلام یک سوال بدجوری ذهنم را مشغول کرده : اونم اینکه وقتی ما با linearlayout می توانیم یک گرید ویو با قابلیت های خوب و دست باز بسازیم چرا گرید ویو بسازیم ممنون میشم راهنمایی کنید؟ (12 سال پیش)
0 0
mbm124 شما به این سوال برنخوردید : اونم اینکه وقتی ما با linear-layout میتوانیم یک لیست ویو با قابلیت های خوب و دست باز بسازیم چرا لیست ویو بسازیم D: (12 سال پیش)
0 0
لیست ویو شامل یک سری الوار با توجه به تعداد خانه آرایه می باشد ، منظور اینکه ما برای هر رکورد از آرایه یک linearlayout بسازیم یک خورده گیج شدم (12 سال پیش)
0 0
grid-view تقریبا عین list-view هستش ، تو list-view که یدونه layout میسازیم برا اینم همینطور ... ایشون اینجا بجای اون layout یدونه image-view به صورت dynamic ساختن. (12 سال پیش)
0 0
سلام تشکر حالا متوجه شدم تشکر از راهنمایی عزیز (12 سال پیش)
0 0
خدا رو شکر ، موفق باشی :) (12 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
طاهر  12 سال پیش
0 0

مهمترین نکته در این مثال خط زیر هست که تعداد ستون ها رو بصورت اتوماتیک مشخص میکنه و نیازی نیست که بنابر گوشی های مختلف تعداد ستونها رو مشخص کنیم

     android:numColumns="auto_fit"
+1 0
من یه مشکلی دارم و اون اینه که گرید ویو من از چپ به راست پر میشه راهی هست برای از راست چین کردنش . و یه سوال دیگه آخرین آیتمم تک آیتم هست میشه و به اندازه بقیه آیتم ها طول داره میشه کاریش کرد که آیتم هایی که تک میوفتن کاملا پرنت رو پر کنن (11 سال پیش)
پاسخ به سوال 
کاشی زاده  11 سال پیش
+5 0

دوستان مشکل راست چین کردن گرید ویو با این کار حل میشه .

ابتدا این کد رو به xml گرید ویو اضافی کنید :

 android:rotationY="180"

بعد همین کد رو هم به لایه آیتم هاتون در xml اضافی کنید : 

  android:rotationY="180"

خوب حالا گرید ویو شما راست چین شد . (;


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .