2016-11-14 117 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