/ / So legen Sie ImageView über ImageView in GridView fest - Android, Rasteransicht, ImageView, Basisadapter

Wie man ImageView über ImageView in GridView setzt - Android, Gridview, Bildansicht, Basisadapter

Angenommen, ich habe mehrere Bilder, die ich übereinander setzen möchte. Wie kann ich dies in GridView tun?

Mögen:
Hintergrund
ImageView1
ImageView2 unten rechts von ImageView2

Hier ist ein Beispiel für das, was ich will: http://i.stack.imgur.com/JS36H.png

Hier sind meine Codes
Aktivität:

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>

In der Frage-Aktivität bekomme ich die GridView

Antworten:

0 für die Antwort № 1

Leider gefällt es GridViews nicht, wenn es Zellen gibtVersuchen Sie sich zu überlappen. Nehmen wir also an, Sie haben eine Zelle in einem Gridview mit 48x48dp. Wenn Sie versuchen, etwas größer als 48 zu rendern, wird es abgeschnitten. Das bedeutet also, dass Sie einen Augentrick machen müssen.

Nehmen wir an, Sie möchten das Hauptbild unter zeigen48 x 48 dp. Nennen wir den zweiten Mann ein Emblem, dessen 16x16dp in der rechten unteren Ecke des Hauptbildes zentriert sein soll. Dann brauchen Sie eine Zelle mit 56dp. Wenn Sie die Mischung mit Padding oder Rand füllen, müssen Sie möglicherweise anpassen. Wenn Sie etwas Ähnliches für das Layout jedes Elements in der GridView tun, sollten Sie den Trick ausführen.

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