Как установить несколько gridview в том же макете в android?

Я хочу установить два вида сетки для того же макета. Я также могу установить это в пределах того же плана, но благодаря прокручиваемому управлению его вид выглядит как «wrap_content».

Но я хочу показать полный вид сетки на экране один за другим, как показано ниже. Введите описание изображения здесь

На рис. Вид сетки показывает его полную высоту. Поэтому, пожалуйста, помогите мне.

Спасибо .

Solutions Collecting From Web of "Как установить несколько gridview в том же макете в android?"

ПОПРОБУЙ ЭТО :

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

У вас нет GridView в ScrollbarView . Так что вы не хотите. Вы можете иметь два сетки для совместного использования экранного пространства.

 <LinearLayout android:layout_height="fill_parent" .... > <GridView android:layout_weight="1" ....... > <GridView android:layout_weight="1" ....... > </LinearLayout> 

Обновить

Здесь приведен пример загрузки asynctask. В onProgressUpdate установить загруженное изображение в его представление.

  protected void onProgressUpdate(Integer... progress) { setImageToView(bitmapImg, progress[0]); // progress[0] is the index or id. } 

Обновление 2

Вы должны сделать это с трудом. Расширьте класс AdapterView и измерьте и разместите элементы самостоятельно. Вот ссылка для начала . Теперь макет будет выглядеть так:

 <ScrollView ....> <LinearLayout android:layout_height="fill_parent" .... > <MyGridView android:layout_height="wrap_content" ....... > <MyGridView android:layout_height="wrap_content" ....... > </LinearLayout> </ScrollView> 

Вы не можете поместить GridView внутри ScrollView, потому что в режиме прокрутки будут использоваться все Vertical TouchEvents. Мне также пришлось обойти эту проблему, я AdapterView реализовать AdapterView самостоятельно для эмуляции gridView behevior без расширения ScrollView.

Я сделал это с horizontal LinearLayout внутри vertical LinearLayout и динамического поля между элементами.

Таким образом у вас будет только корневой ScrollView, который позволит вам прокручивать макет со всем элементом GridView.

Если у вас есть другие элементы с GridView, я рекомендую использовать FrameLayout с 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>