开发者

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.

how to set Multiple gridview in same layout in android?

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜