Android - 方形表格布局

标签 android view grid imageview tablelayout

我需要创建一个完美的方形 TableLayout。该表是由大小相等的对象组成的网格。这里的问题是,在横向布局中,表格应该占用最大的空间量,但仅此而已。换句话说,我需要 table 的宽度等于允许的最大高度。广告在 Activity 开始后约 10 秒左右出现,这也增加了复杂性。

这是我迄今为止为实现这一目标所做的尝试:

  • 我创建了一个水平居中对齐的不可见 View 。然后我将表格的右侧与该 View 对齐。这可行,但对于某些设备,屏幕比例并不能使此设置完美。在像机器人这样的设备上,由于表格宽度小于高度,底行会被挤压。
  • 我创建了一个将 adjustViewBounds 设置为 true 的 ImageView。我用一个非常大的方形图像来获取它。我将其设置为位于 adView 上方并对齐顶部并向左对齐。然后我将表格布局设置为与该 ImageView 的边界对齐。这没有用,因为它是一个内存大户,并且当广告弹出时图像边界从未完全调整过。图像源将转到一个较小比例的正方形,但右边界从未调整到新边界。

我认为如果我制作一个 TableLayout 的自定义类并设置 tablewidth = tableheight,这会很容易。我正在为这个想法而苦苦挣扎,因为我不知道我需要把必要的逻辑放在哪里。我想我需要在最初绘制表格时添加它,并在广告移动到位后调整表格时再次添加它。

有人可以帮忙提供一些有关 TableLayout 类的示例代码吗?还有其他方法吗?

太平洋标准时间 3 月 30 日晚上 9:05 更新

在查看 CommonsWare 的建议后,我在自定义 TableLayout 类方面取得了一些进展。我更接近于使用此类实现解决方案,但还有一件事需要解决。新的 TableLayout 不会调整它的边界,因此即使内容的大小正确,宽度仍会占用额外的空间。宽度看起来是在没有广告时设置的,之后它永远不会改变。

这是我非常简单的扩展 TableLayout 类。请注意我将宽度和高度都设置为等于高度的 onMeasure 方法:

public class SquareTableLayout extends TableLayout {

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

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

这是问题的截图。我向 TableLayout 添加了紫色背景以突出显示问题。

http://ribzy.com/images/tile_takedown_landscape.png

最佳答案

由于您已确定的原因,

TableLayout 无法完成您所寻求的。没有内置布局具有将宽度和高度绑定(bind)在一起的概念。很可能,您需要从头开始创建自定义布局管理器,like this one .

关于Android - 方形表格布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5494046/

相关文章:

android - 将文本与微调器的中心对齐

view - Ember 不更新模型更改的 View

html - 仅 CSS 不对称流体网格

jquery测验更改结果 View

css - 使用多个网格容器

html - 网格属性不适用于网格容器内的元素

android - Firebase Facebook 登录哈希键问题

android - 如何调试android应用程序的smali代码?

android - 使用样式的警报对话框文本颜色

iphone - 如何重新加载 UIView?