如何重新组织布局的内容取决于其中的视图数量

how to reorganize the content of the layout depends on the number of views inside it

我在 gridlayout 中有 10 个图像视图,我将 columncount 设置为 5,所以在五个图像视图之后它将转到下一行,现在如果我想让一些图像视图可见性消失,应该重新组织取决于数量imageviews,但问题是它显示了消失的视图的空间!!

这是我的 xml 代码

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:columnCount="5"
        android:layout_marginLeft="5dp"
        android:orientation="horizontal">

        <ImageView
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="5dp"
            android:tint="@color/brown"
            android:id="@+id/ivImage1"
            android:background="@color/brown"/>

        <ImageView
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="5dp"
            android:visibility="gone"
            android:id="@+id/ivImage2"
            android:background="@color/brown"
            android:tint="@color/brown"/>

        <ImageView
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="5dp"
            android:id="@+id/ivImage3"
            android:visibility="gone"
            android:background="@color/brown"
            android:tint="@color/brown"/>


        <ImageView
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="5dp"
            android:id="@+id/ivImage4"
            android:background="@color/brown"
            android:tint="@color/brown"/>

        <ImageView
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:id="@+id/ivImage5"
            android:background="@color/brown"
            android:layout_margin="5dp"
            android:tint="@color/brown"/>



        <ImageView
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="5dp"
            android:id="@+id/ivImage6"
            android:background="@color/brown"
            android:tint="@color/brown"/>

        <ImageView
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:visibility="gone"
            android:layout_margin="5dp"
            android:id="@+id/ivImage7"
            android:background="@color/brown"
            android:tint="@color/brown"/>



        <ImageView
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="5dp"
            android:id="@+id/ivImage8"
            android:background="@color/brown"
            android:tint="@color/brown"/>

        <ImageView
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:visibility="gone"
            android:layout_margin="5dp"
            android:id="@+id/ivImage9"
            android:background="@color/brown"
            android:tint="@color/brown"/>
        <ImageView
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="5dp"
            android:id="@+id/ivImage10"
            android:background="@color/brown"
            android:tint="@color/brown"/>


    </GridLayout>

我想要的是,如果一些观点消失了,其他观点应该取代它,希望我的问题很清楚 提前致谢

使用 GridView 而不是 GridLayout 并使用:ImageView.setVisibilty(View.GONE);

像这样使用网格视图并在数组列表中设置图像

 <GridView
                android:id="@+id/gv_photosGrid"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/white"
                android:horizontalSpacing="3dp"
                android:numColumns="5"
                android:stretchMode="columnWidth"
                android:verticalSpacing="3dp" />

将 gridView 初始化为

    gv_photosGrid = (GridView) rootView.findViewById(R.id.gv_photosGrid);
    gv_photosGrid.setAdapter(adapter);

创建适配器为

public class Adapter extends BaseAdapter {
    Context context;
    LayoutInflater laytout_inflator;
    ArrayList<String> list = new ArrayList<>();


    public Adapter(Context _context, ArrayList<String> list) {
        context = _context;
        this.list = list;
        laytout_inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int arg0) {
        return null;
    }

    @Override
    public long getItemId(int arg0) {
        return 0;
    }

    @Override
    public View getView(final int possition, View arg1, ViewGroup arg2) {
        ViewHolder view_holder = new ViewHolder();
        if (arg1 == null) {
            arg1 = laytout_inflator.inflate(R.layout.template, null);
            view_holder = intitViews(arg1);
            arg1.setTag(view_holder);
        } else {
            view_holder = (ViewHolder) arg1.getTag();
        }
//        view_holder.iv_photo.setImage

        return arg1;
    }

    public ViewHolder intitViews(View view) {
        ViewHolder view_holder = new ViewHolder();
        view_holder.iv_photo = (ImageView) view.findViewById(R.id.iv_userLogo);]
        return view_holder;
    }

    public static class ViewHolder {
        ImageView iv_photo;
    }
}