Я пытаюсь создать галерею в своем проекте Android, но не могу заставить ее работать должным образом.
Вот что я пытаюсь сделать:
По сути, я хочу галерею, которая отображает только одно изображение, но все еще имеет те же элементы управления (скользя влево и вправо).Я получаю фотографии асинхронно из Интернета.
Где я нахожусь?
Ну, а пока я просто пытаюсь отобразить галерею ..Я увижу шаг «одна картинка» после.
В чем моя проблема?
Хорошо ... Моя галерея не отображается на моем макете.Вообще.
В чем проблема?
Журнальная информация дает мне информацию о том, что высота и ширина моего объекта галереи равны ... 0.
Говоря о коде ...
Layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" android:background="@drawable/fond">
<ImageView android:background="@drawable/banniere" android:layout_height="wrap_content" android:layout_width="fill_parent"/>
<Gallery
android:id="@+id/gallery"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
Активность
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.galleryfullscreen);
Gallery gal = (Gallery) findViewById(R.id.gallery);
ArrayList<Photo> photos = (ArrayList<Photo>) this.getIntent().getExtras().getSerializable("Photos");
int pos = this.getIntent().getExtras().getInt("Index");
Log.i("Season",photos.toString());
gal.setAdapter(new PhotoAdapter(this, photos, false));
gal.setSelection(pos);
Log.d("Bottom", String.valueOf(gal.getBottom()));
Log.d("Right", String.valueOf(gal.getRight()));
Log.d("Width", String.valueOf(gal.getWidth()));
Log.d("Height", String.valueOf(gal.getHeight()));
}
Дополнительные функции установлены правильно.
Адаптер
открытый класс PhotoAdapter расширяет BaseAdapter {
private ArrayList<PhotoView> views;
private ArrayList<Photo> season;
public PhotoAdapter(Context c, ArrayList<Photo> images, boolean mini) {
season = images;
views = new ArrayList<PhotoView>();
for (int i = 0; i < images.size() ; i++)
if (mini)
views.add(new PhotoView(c,images.get(i).getUrlMini(),false));
else{
views.add(new PhotoView(c,images.get(i).getUrlBig(),true));
}
}
@Override
public int getCount() {
return views.size();
}
@Override
public Object getItem(int position) {
return views.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return views.get(position);
}
public ArrayList<Photo> getSeason() {
return season;
}
}
Этот адаптер работает нормально для других объектов (таких как gridview)
И PhotoView ...
открытый класс PhotoView расширяет ImageView {
Bitmap image;
public PhotoView(Context context, String url, boolean Gallery) {
super(context);
if (!Gallery){
this.setLayoutParams(new GridView.LayoutParams(GridView.LayoutParams.WRAP_CONTENT,GridView.LayoutParams.WRAP_CONTENT));
this.setScaleType(ImageView.ScaleType.FIT_CENTER);
this.setImageDrawable((getResources().getDrawable(R.drawable.blk)));
new DownloadImageTask().execute(url);
}
else{
this.setLayoutParams(new Gallery.LayoutParams(100,100));
this.setScaleType(ImageView.ScaleType.FIT_CENTER);
this.setBackgroundDrawable(((getResources().getDrawable(R.drawable.blk))));
this.setImageDrawable((getResources().getDrawable(R.drawable.blk)));
}
}
public Bitmap getImage(){
return image;
}
public void setImage(Bitmap img){
image = img;
this.setImageBitmap(image);
}
То же самое, он отлично работает для вида сетки.С заданием на загрузку, которое еще не настроено для Галереи.По крайней мере, я пытаюсь отобразить ресурс перед настройкой, так что я уверен, что проблема не в этом.
Ооочень ... почему мои журналы показывают "0" для ширины и высоты галереи?LayoutParams установлены для объекта (я пробовал и XML и код), и для представлений внутри.Элементы создаются, и вызывается метод getView.Я попытался найти здесь LayoutParams, ничего не изменилось.
Я также попытался добавить часть xmlns: android = "http://schemas.android.com/apk/res/android" в макет галереи, ничего не изменилось.
Я действительно не знаю, чего мне не хватает. Я пытался адаптировать множество уроков по объектам галереи, но все же ... не знаю! Если у вас есть идеи, что мне следует делать / пробовать, пожалуйста...
Спасибо всем!
Приветствия