how to set Multiple gridview in same layout in android?
I want to set two grid view for same layout. I can also able to set that within same lay out but due to scrollable control its look like a "wrap_content".
but i want to show full grid view in a screen one after another like below fig.
in above fig. grid view show full height of it. so please help me.
Th开发者_JS百科ank you .
You cannot have a GridView
in a ScrollbarView
. So what you want is not possible. You can have the two gridviews to share the screen space equally.
<LinearLayout android:layout_height="fill_parent"
.... >
<GridView android:layout_weight="1"
....... >
<GridView android:layout_weight="1"
....... >
</LinearLayout>
Update
There is a download asynctask example here.
In onProgressUpdate
set the downloaded image to its view.
protected void onProgressUpdate(Integer... progress) {
setImageToView(bitmapImg, progress[0]); // progress[0] is the index or id.
}
Update 2
You should do it the hard way. Extend the AdapterView
class and measure and layout the items yourself. Here is link for start. The layout now would look like
<ScrollView ....>
<LinearLayout android:layout_height="fill_parent"
.... >
<MyGridView android:layout_height="wrap_content"
....... >
<MyGridView android:layout_height="wrap_content"
....... >
</LinearLayout>
</ScrollView>
TRY THIS :
public void createTableRow_you(int no) {
tr_u = new TableRow(this);
LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT
, LayoutParams.WRAP_CONTENT);
tr_u.setLayoutParams(lp);
tr_u.setWeightSum((float) 1.0);
tr_u.setPadding(10, 0, 10, 0);
tr_u.setGravity(Gravity.CENTER_VERTICAL );
ImageView img1= new ImageView(this);
//img1.setLayoutParams(lp);
img1.setPadding(10, 10, 10, 10);
// img1.setScaleType(ScaleType.FIT_XY);
if (density == DisplayMetrics.DENSITY_HIGH) {
img1.setLayoutParams(new TableRow.LayoutParams(125, 125 ));
}else {
img1.setLayoutParams(new TableRow.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
}
if (no < photo_icon_u.size()) {
img1.setImageDrawable(photo_icon_u.get(no));
img1.setId(Integer.parseInt(photoID_profile.get(no)));
img1.setClickable(true);
img1.setOnClickListener(this);
img1.setTag("profile");
}else {
img1.setImageResource(R.drawable.icon);
img1.setVisibility(View.GONE);
}
ImageView img2= new ImageView(this);
//img2.setLayoutParams(lp);
img2.setPadding(10, 10, 10, 10);
// img2.setLayoutParams(new TableRow.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, (float) 0.33));
// img2.setScaleType(ScaleType.FIT_XY);
if (density == DisplayMetrics.DENSITY_HIGH) {
img2.setLayoutParams(new TableRow.LayoutParams(125, 125 ));
}else {
img2.setLayoutParams(new TableRow.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
}
if (no+1 < photo_icon_u.size() ) {
img2.setImageDrawable(photo_icon_u.get(no+1));
img2.setId(Integer.parseInt(photoID_profile.get(no+1)));
img2.setClickable(true);
img2.setOnClickListener(this);
img2.setTag("profile");
}else {
img2.setImageResource(R.drawable.icon);
img2.setVisibility(View.GONE);
}
ImageView img3= new ImageView(this);
// img3.setLayoutParams(lp);
img3.setPadding(10, 10, 10, 10);
// img3.setLayoutParams(new TableRow.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, (float) 0.34));
//img3.setScaleType(ScaleType.FIT_XY);
if (density == DisplayMetrics.DENSITY_HIGH) {
img3.setLayoutParams(new TableRow.LayoutParams(125, 125 ));
}else {
img3.setLayoutParams(new TableRow.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
}
if ( no+2 < photo_icon_u.size()) {
img3.setImageDrawable(photo_icon_u.get(no+2));
img3.setId(Integer.parseInt(photoID_profile.get(no+2)));
img3.setClickable(true);
img3.setOnClickListener(this);
img3.setTag("profile");
}else {
img3.setImageResource(R.drawable.icon);
img3.setVisibility(View.GONE);
}
tr_u.addView(img1);
tr_u.addView(img2);
tr_u.addView(img3);
//. tb_photo_u.addView(tr_u);
tb_photo_u.addView(tr_u, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
}
You can't put a GridView inside a ScrollView because the scroll view will eat all the Vertical TouchEvents.
I had to work around this problem as well, my solution was to implement an AdapterView
by myself to emulate the gridView behevior without extending ScrollView.
I did it with horizontal LinearLayout
inside a vertical LinearLayout
and dynamic margin between elements.
that way you will have only a root ScrollView that let you scroll down the layout with all the GridView element.
If you have some other elements with GridView, I recommend using FrameLayout with layout_weight.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
1st
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginTop="20dp">
2nd
</FrameLayout>
</LinearLayout>
精彩评论