2016-02-03 66 views
4

我一直在尝试实现带有方形儿童的GridLayout,正如您可以从此图像中看到的那样。与方形儿童的网格布局

enter image description here

所以基本上认为应视无我的项目申报列大小和行数量大小调整。这是可能的GridLayout?如果没有,那就忘掉这个问题。

现在让我们来到广场部分。我试图实现这种代码

public class SquareLinearLayout extends LinearLayout { 


    public SquareLinearLayout(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     final int widthSize = MeasureSpec.getSize(widthMeasureSpec); 
     final int heightSize = MeasureSpec.getSize(heightMeasureSpec); 

     if (widthSize == 0 && heightSize == 0) { 
      super.onMeasure(widthMeasureSpec, heightMeasureSpec); 

      final int minSize = Math.min(getMeasuredWidth(), getMeasuredHeight()); 
      setMeasuredDimension(minSize, minSize); 
      return; 
     } 

     final int size; 
     if (widthSize == 0 || heightSize == 0) { 
      size = Math.max(widthSize, heightSize); 
     } else { 
      size = Math.min(widthSize, heightSize); 
     } 

     final int newMeasureSpec = MeasureSpec.makeMeasureSpec(size, MeasureSpec.EXACTLY); 
     super.onMeasure(newMeasureSpec, newMeasureSpec); 
    } 
} 

但它确实使孩子布局广场也位于屏幕推其他孩子出了布局的可视部分的整个宽度。

你有任何链接,或者你自己有一个类似于这个类的代码,但不占用整个布局的宽度?提前致谢。

+0

http://stackoverflow.com/a/10033481/2826147 –

回答

0

永远不要我使用上面相同的代码工作,并将项目放在TableLayout而不是Gridlayout。

下面是一个示例代码,如果您像我一样陷入这种情况。首先我为广场创建一个布局。

<?xml version="1.0" encoding="utf-8"?> 
<com.android.f45tv.view.ui.SquareLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/sllContainer" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:padding="2dp" 
    android:orientation="vertical"> 

    <LinearLayout 
     android:id="@+id/llHolder" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:padding="2dp" 
     android:gravity="center" 
     android:orientation="vertical"> 

     <TextView 
      android:id="@+id/tvName" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:textSize="18sp" 
      android:textColor="@color/white" 
      android:layout_marginBottom="2dp" 
      android:gravity="center_horizontal" /> 

     <TextView 
      android:id="@+id/tvPercent" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:textSize="40sp" 
      android:textColor="@color/white" 
      android:gravity="center" /> 

     <TextView 
      android:id="@+id/tvBPM" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:textColor="@color/white" 
      android:textSize="12sp" 
      android:gravity="end" /> 

     <TextView 
      android:id="@+id/tvBPMLabel" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="bpm" 
      android:textSize="10sp" 
      android:textColor="@color/white" 
      android:gravity="end" /> 

    </LinearLayout> 

</com.android.f45tv.view.ui.SquareLinearLayout> 

然后将其与表行内的include标签添加到我的主活动布局。