2017-03-24 12 views
0

我有10個圖像在gridlayout內,我做了columncount 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> 

我想要的是,如果一些看法了其他意見一定要把它的地方,希望我的問題是事先

+1

你將內容添加到您的網格編程?我的意思是,是否有一個你迭代的數組來填充網格? – Rob

+0

@rob no我沒有,實際上我想讓所有的圖像視圖都消失了,在代碼中我會讓它們中的一些可見取決於一些編碼,但現在我只是嘗試看看它如何在xml中看起來如果我確實讓它們中的一部分消失了,但它看起來不像我想的那樣,如果有另一種方法可以通過編程的方式來完成,我不知道嗎? –

+1

更好的你使用gridView它將被自己管理和設置計數,因爲你需要這樣的coud被處理很容易 – g7pro

回答

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" /> 

Initailise在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; 
    } 
} 
+1

爲您的需要設置數組列表中的所有顏色,並作爲列表對象傳遞給列表,因爲我已經提到 – g7pro

+0

我沒有讓你litteI位,我用你的代碼,它的工作正常,但圖像重複的數組列表大小,以及您的代碼中的數組列表類型字符串?我必須改變它?!我如何設置圖像? –

+0

我解決了它,現在我知道了,謝謝你的幫助,我把類型整數的ArrayList和getView方法中的圖像設置爲 –

2

使用GridView中明確 感謝而不是GridLayout和Use:ImageView.setVisibilty(View.GONE);

+0

如何在xml中的gridview中添加Imageview其中我認爲不可能? –

+2

沒有它是不可能的在java中使用適配器添加imageview –

相關問題