自定义方形视图边距填充问题

时间:2014-06-19 14:50:33

标签: java android view margins

我试图用方形视图制作一张NxM表(在我的情况下是2x5)。

一切正常,但边距为非零和/或填充并非所有视图都具有相同的尺寸,在某些单元格的行之间显示一些背景。

这里是xml和java代码。

我甚至在没有TableLayout的情况下尝试使用一个带有一个LinearLayout的行,使用FrameLayout,但它是相同的。尝试使用不同的模拟器,我得到不同数量的具有相同尺寸的单元格。

所以问题是在同一行中放置相同平方尺寸的许多视图(带背景。尝试没有bg图像,只用彩色bg,同样的问题)。

非常感谢!

布局:     

    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"   >

        <com.myName.myProject.NodeContainer
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="0dp"
            android:layout_weight="1"
            android:background="@drawable/tile_sq" 
      >
        </com.myName.myProject.NodeContainer>

        <com.myName.myProject.NodeContainer
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="0dp"
            android:layout_weight="1"
            android:background="@drawable/tile_sq" >
        </com.myName.myProject.NodeContainer>

        <com.myName.myProject.NodeContainer
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="0dp"
            android:layout_weight="1"
            android:background="@drawable/tile_sq" >
        </com.myName.myProject.NodeContainer>

        <com.myName.myProject.NodeContainer
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="0dp"
            android:layout_weight="1"
            android:background="@drawable/tile_sq" >
        </com.myName.myProject.NodeContainer>

        <com.myName.myProject.NodeContainer
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="0dp"
            android:layout_weight="1"
            android:background="@drawable/tile_sq" >
        </com.myName.myProject.NodeContainer>
    </TableRow>
 <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <com.myName.myProject.NodeContainer
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="0dp"
            android:layout_weight="1"
            android:background="@drawable/tile_sq" >
        </com.myName.myProject.NodeContainer>

        <com.myName.myProject.NodeContainer
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="0dp"
            android:layout_weight="1"
            android:background="@drawable/tile_sq" >
        </com.myName.myProject.NodeContainer>

        <com.myName.myProject.NodeContainer
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="0dp"
            android:layout_weight="1"
            android:background="@drawable/tile_sq" >
        </com.myName.myProject.NodeContainer>

        <com.myName.myProject.NodeContainer
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="0dp"
            android:layout_weight="1"
            android:background="@drawable/tile_sq" >
        </com.myName.myProject.NodeContainer>

        <com.myName.myProject.NodeContainer
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="0dp"
            android:layout_weight="1"
            android:background="@drawable/tile_sq" >
        </com.myName.myProject.NodeContainer>
    </TableRow>
</TableLayout>

类别:

package com.myName.myProject;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.LinearLayout;

public class NodeContainer extends LinearLayout {

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

    public NodeContainer(Context context) {
        super(context);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

        final int width = getMeasuredWidth();
        setMeasuredDimension(width, width);

    }
}

0 个答案:

没有答案