2016-11-14 104 views
1

我有一個問題,我無法弄清楚。我認爲這很簡單,但只是不知道該怎麼做。Android Studio網格佈局刷新

我有一個GridLayout與24行和5列,並且所有單元格包含CardView。例如,這是我layout.xml(小版):

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/ScrollView01" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:onClick="RefreshWarehouse"> 

    <GridLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="#ddd" 
     android:orientation="horizontal" 
     android:padding="16dp" 
     android:columnCount="5" 
     android:rowCount="24" 
     android:onClick="RefreshWarehouse"> 

     //Accessories 

     <android.support.v7.widget.CardView 
      android:id="@+id/AccessoriesBoxLVL1CView" 
      android:layout_width="100dp" 
      android:layout_margin="5dp" 
      android:layout_height="120dp" 
      android:visibility="visible"> 

      <RelativeLayout 
       android:background="#fff" 
       android:elevation="4dp" 
       android:padding="5dp" 
       android:layout_width="match_parent" 
       android:layout_height="120dp"> 

       <ImageView 
        android:id="@+id/AccessoriesBoxLVL1Image" 
        android:layout_width="40dp" 
        android:layout_height="40dp" 
        android:src="@drawable/money" 
        android:layout_alignParentTop="true" 
        android:layout_centerHorizontal="true" /> 

       <TextView 
        android:id="@+id/AccessoriesBoxLVL1Title" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:paddingBottom="5dp" 
        android:text="AccessoriesBoxLVL - 1" 
        android:textSize="8sp" 
        android:layout_below="@+id/AccessoriesBoxLVL1Image" 
        android:layout_centerHorizontal="true" /> 

       <Button 
        android:text="Open" 
        android:layout_width="50dp" 
        android:layout_height="35dp" 
        android:id="@+id/AccessoriesBoxLVL1Button" 
        android:textSize="10sp" 
        android:layout_below="@+id/AccessoriesBoxLVL1TView" 
        android:layout_centerHorizontal="true" 
        android:onClick="openAccessoriesBoxLVL1"/> 

       <TextView 
        android:id="@+id/AccessoriesBoxLVL1TView" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Count: " 
        android:textColor="#8b8b8b" 
        android:textSize="9sp" 
        android:layout_below="@+id/AccessoriesBoxLVL1Title" 
        android:layout_centerHorizontal="true" /> 

      </RelativeLayout> 

     </android.support.v7.widget.CardView> 

     <android.support.v7.widget.CardView 
      android:id="@+id/AccessoriesBoxLVL2CView" 
      android:layout_width="100dp" 
      android:layout_margin="5dp" 
      android:layout_height="120dp" 
      android:visibility="visible"> 

      <RelativeLayout 
       android:background="#fff" 
       android:elevation="4dp" 
       android:padding="5dp" 
       android:layout_width="match_parent" 
       android:layout_height="120dp"> 

       <ImageView 
        android:id="@+id/AccessoriesBoxLVL2Image" 
        android:layout_width="40dp" 
        android:layout_height="40dp" 
        android:src="@drawable/money" 
        android:layout_alignParentTop="true" 
        android:layout_centerHorizontal="true" /> 

       <TextView 
        android:id="@+id/AccessoriesBoxLVL2Title" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:paddingBottom="5dp" 
        android:text="AccessoriesBoxLVL - 2" 
        android:textSize="8sp" 
        android:layout_below="@+id/AccessoriesBoxLVL2Image" 
        android:layout_centerHorizontal="true" /> 

       <Button 
        android:text="Open" 
        android:layout_width="50dp" 
        android:layout_height="35dp" 
        android:id="@+id/AccessoriesBoxLVL2Button" 
        android:textSize="10sp" 
        android:layout_below="@+id/AccessoriesBoxLVL2TView" 
        android:layout_centerHorizontal="true" 
        android:onClick="openAccessoriesBoxLVL2"/> 

       <TextView 
        android:id="@+id/AccessoriesBoxLVL2TView" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Count: " 
        android:textColor="#8b8b8b" 
        android:textSize="9sp" 
        android:layout_below="@+id/AccessoriesBoxLVL2Title" 
        android:layout_centerHorizontal="true" /> 

      </RelativeLayout> 

     </android.support.v7.widget.CardView> 

    </GridLayout> 
</ScrollView> 

而且我已經做了一切visibility="gone"和我有設置visibility="visible"刷新方法:

if(Box.Accessories[0] > 0){ 
    ((CardView) findViewById(R.id.AccessoriesBoxLVL1CView)).setVisibility(View.VISIBLE); 
} 
if(Box.Accessories[4] > 0){ 
    ((CardView) findViewById(R.id.AccessoriesBoxLVL2CView)).setVisibility(View.VISIBLE); 
} 
if(Box.Accessories[8] > 0){ 
    ((CardView) findViewById(R.id.AccessoriesBoxLVL3CView)).setVisibility(View.VISIBLE); 
} 
if(Box.Accessories[12] > 0){ 
    ((CardView) findViewById(R.id.AccessoriesBoxLVL4CView)).setVisibility(View.VISIBLE); 
} 

但問題是,我可以」牛逼弄清楚如何使每個CardView秀行(horziontaly),而不是在這樣的形象自己的立場:

enter image description here

回答

0

我建議你做的事情是使用一個適配器的GridLayout,並動態地將CardViews添加到適配器中,這將導致它們以你想要的方式顯示出來。這意味着卡片將而不是在GridLayout,直到你決定你想要他們在那裏。

請參閱this link並查找「使用適配器構建佈局」以瞭解此設計模式如何工作並實現它。

+0

謝謝,將檢查出:) – MsCrelix

+0

沒問題,這對你非常有用,因爲適配器的使用在Android中非常基礎 – bluesummers