/ / Jak ustawić ImageView nad ImageView w GridView - Android, gridview, imageview, baseadapter

Jak ustawić ImageView na ImageView w GridView - Android, gridview, imageview, baseadapter

Załóżmy, że mam wiele obrazów, które chcę ustawić jeden na drugim, jak mogę to zrobić w GridView?

Lubić:
tło
ImageView1
ImageView2 w prawym dolnym rogu ImageView2

Oto przykład tego, czego chcę: http://i.stack.imgur.com/JS36H.png

Oto moje kody
Czynność:

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

}

Układ:

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

W zadaniu Pytanie otrzymuję GridView

Odpowiedzi:

0 dla odpowiedzi № 1

Niestety GridViews nie podoba się, gdy komórkistarają się nakładać na siebie. Powiedzmy, że masz komórkę w widoku siatki o wymiarach 48 x 48dp. Próba renderowania wszystkiego, co jest większe niż 48 spowoduje, że zostanie ona przycięta. Oznacza to, że będziesz musiał zrobić coś w stylu oka.

Powiedzmy, że chcesz pokazać główny obraz w48x48dp. Nazwijmy drugiego faceta godłem, którego 16 x 16dp, a ty chcesz, aby był wyśrodkowany w prawym dolnym rogu głównego obrazu. Następnie będziesz potrzebować komórki o wielkości około 56dp. Jeśli dodasz dopełnienie lub margines do miksu, konieczne może być dostosowanie. Wykonanie czynności podobnej do następującej dla układu każdego elementu w GridView powinno załatwić sprawę.

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