/ / Comment définir ImageView sur ImageView dans GridView - android, gridview, imageview, baseadapter

Comment définir ImageView sur ImageView dans GridView - android, gridview, imageview, baseadapter

Supposons que je souhaite placer plusieurs images l'une sur l'autre, comment puis-je le faire dans GridView?

Comme:
Contexte
ImageView1
ImageView2 en bas à droite de l'ImageView2

Voici un exemple de ce que je veux: http://i.stack.imgur.com/JS36H.png

Voici mes codes
Activité:

public class ImgAdapter extends BaseAdapter {
private Context mContext;
private ColorMatrixColorFilter cf;
String Questions = Question.Questions;
int level = Levels.level;

public ImgAdapter(Context c) {
mContext = c;
ColorMatrix matrix = new ColorMatrix();
//matrix.setSaturation(0); //0 means grayscale
matrix.setSaturation(0);
cf = new ColorMatrixColorFilter(matrix);
}

public int getCount() {

return ThumbIds.length;

public Object getItem(int position) {
return null;
}

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

public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
SharedPreferences pref = mContext.getSharedPreferences(Questions, Context.MODE_PRIVATE);


//imageView = (ImageView) convertView;
imageView = new ImageView(mContext);
int size = mContext.getResources().getDimensionPixelSize(R.dimen.width);
imageView.setLayoutParams(new GridView.LayoutParams(size, size));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setAdjustViewBounds(true);
imageView.setImageResource(ThumbIds[position]);



if(pref.getBoolean(level+"answered"+position, false)){

//Thats the ImageView I want to set over the another ImageView
/*ImageView answ;
answ = new ImageView(mContext);
answ.setScaleType(ImageView.ScaleType.CENTER_CROP);
answ.setAdjustViewBounds(true);
answ.setImageResource(R.drawable.answered);*/

imageView.setImageResource(ThumbIds[position]+1);
}

return imageView;

}


public static Integer[] ThumbIds =
{
R.drawable.1,
R.drawable.2,
R.drawable.3,
R.drawable.4,
R.drawable.5,
R.drawable.6,
R.drawable.7
};

}

Disposition:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:id="@+id/layout" >

<TextView
android:id="@+id/Correct"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
/>

<GridView
android:id="@+id/Question"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center"
android:horizontalSpacing="20dp"
android:verticalSpacing="20dp"
android:numColumns="3"
android:stretchMode="columnWidth"
tools:context=".Question" />

</LinearLayout>

Dans l'activité Question, j'obtiens le GridView

Réponses:

0 pour la réponse № 1

Malheureusement, GridView ne l’aime pas lorsque les cellulesessayez de vous superposer. Supposons donc que vous ayez dans une vue en grille une cellule de 48x48dp. Si vous essayez de rendre tout ce qui est plus grand que 48, il sera écrêté. Cela signifie donc que vous aurez besoin de faire un truc de la sorte.

Disons que vous voulez montrer l'image principale à48x48dp. Appelons le deuxième type un emblème dont vous voulez 16x16dp et centré dans le coin inférieur droit de l'image principale. Ensuite, vous aurez besoin d'une cellule d'environ 56dp. Si vous apportez un rembourrage ou une marge dans le mélange, vous devrez peut-être vous ajuster. Faire quelque chose qui ressemble à ce qui suit pour la disposition de chaque élément dans GridView devrait faire l'affaire.

<FrameLayout
android:layout_width="56dp"
android:layout_height="56dp"
....any other attributes>

<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="left|top"
android:src="Your main image"
...any other attributes/>

<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_gravity="right|bottom"
android:src="Your main image"
...any other attributes/>

</FrameLayout>