/ / Como definir o ImageView em ImageView no GridView - android, gridview, imageview, baseadapter

Como definir o ImageView sobre ImageView no GridView - android, gridview, imageview, baseadapter

Suponha que eu tenha várias imagens que quero definir em cima da outra, como posso fazer isso no GridView?

Gostar:
fundo
ImageView1
ImageView2 na parte inferior direita do ImageView2

Aqui está um exemplo para o que eu quero: http://i.stack.imgur.com/JS36H.png

Aqui estão meus códigos
Atividade:

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
};

}

Layout:

<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>

Na atividade Questão recebo o GridView

Respostas:

0 para resposta № 1

Infelizmente GridViews não gosta quando as célulastente se sobrepor. Então vamos dizer que você tem uma célula dentro de um gridview que é 48x48dp. Tentar render qualquer coisa que seja maior que 48 fará com que ela seja cortada. Então, isso significa que você precisa fazer um truque da coisa do olho.

Vamos dizer que você quer mostrar a imagem principal em48x48dp. Vamos chamar o segundo cara de um emblema cuja 16x16dp e você quer que ele esteja centralizado no canto inferior direito da imagem principal. Então você precisará de uma célula com cerca de 56dp. Se você trouxer preenchimento ou margem no mix, talvez seja necessário ajustar. Fazer algo semelhante ao seguinte para o layout de cada item dentro do GridView deve fazer o truque.

<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>