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

时间:2017-03-24 09:40:29

标签: android android-imageview android-gridlayout

我在gridlayout中有十个图像视图,并且我将columncount 5设为5,因此在五个图像视图之后它将转到下一行,现在如果我想使一些图像视图可见性消失,则应该重新组织取决于图像视图的数量,但问题是它显示了观点的空间!!

这是我的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>

我想要的是,如果其他一些观点消失,其他观点应该取而代之,希望我的问题很明确 提前谢谢

2 个答案:

答案 0 :(得分:2)

使用GridView代替GridLayout并使用:ImageView.setVisibilty(View.GONE);

答案 1 :(得分:2)

使用这样的网格视图并在arraylist中设置图像

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