【问题标题】:Android scrollview of mixed size image views that fit together like tetris像俄罗斯方块一样组合在一起的混合大小图像视图的 Android 滚动视图
【发布时间】:2012-11-30 09:56:19
【问题描述】:

我要创建的是所有不同大小的图像的滚动视图,它们完美地组合在一起,没有任何明显的行或列。每个图像代表一种食物,每种食物都有一定比例的所有其他用户投票。投票的百分比决定了 imageviews 的大小。有点棘手的地方是我想让所有这些不同大小的图像视图在图像的混合网格图中整齐地组合在一起。为了让您直观地了解我试图创建的内容,请在 scollview 中想象类似于 http://www.todomap.net/ 的内容。

我通常会发布到目前为止我尝试过的代码,但我的尝试都没有接近。我什至想不出一组好的关键字来搜索类似的例子。

【问题讨论】:

  • 也许直接去canvas,或者只是在你的滚动视图中使用 FrameLayout 并使用你的图像视图的 LayoutParams。
  • 正如@dokkaebi 建议的那样,如果您尝试在此范围内自定义视图,A Canvas 是您的最佳选择。你可以随心所欲地实现绘图
  • 您可以在知道屏幕宽度的情况下以编程方式设置图像视图大小。我的意思是,如果你想在第一行显示 3 张图片。第一个有 200 票,第二个 100 和最后一个 60。如果您在 720 像素宽度的显示器中工作,您可以将 400 像素分配给第一个,200 像素分配给第二个,120 像素分配给最后一个。看看 Display.getWitdh() 和 LayoutParams 来实现这一点。
  • 我有一个想法,是否可以在 web 视图中执行此操作,同时使每个框成为打开新活动的链接?
  • Webview 是可能的,但请注意:WebView 实现在不同设备和平台版本之间存在很大差异,并且做任何花哨的事情都会非常令人沮丧。还要注意设备像素和网络视图像素之间的差异;您需要进行转换以精确调整大小。此外,在任何其他视图中的单击处理程序中启动 Activity 与通过 Web 视图中的链接单击执行它一样容易(实际上可能更容易)。

标签: android gridview size imageview scrollview


【解决方案1】:

只需使用网格布局。您可以根据需要添加具有行跨度和列跨度的视图。您将获得您所指网站图像的精确副本。

只需扩展 gridLayout。使用以下函数

private Spec getSpan(int span) {
    return spec(UNDEFINED, span, FILL);
}

public void addView(View view, int row_span, int column_span) {
    LayoutParams params = new LayoutParams(getSpan(row_span), getSpan(column_span));
    params.height = square_height*row_span;
    params.width = square_width*column_span;
    addView(view, params);
}

然后您可以将视图添加到网格布局,它会为它们找到最佳位置。 记得定义行、列、square_width 和 square_height

setRowCount(rows);
setColumnCount(columns);

【讨论】:

    猜你喜欢
    • 2021-11-08
    • 2018-06-06
    • 2013-03-17
    • 2013-04-24
    • 2014-01-03
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多