【问题标题】:Place triangles in android layout and put another triangle on left and right side onClick()在android布局中放置三角形并在左侧和右侧放置另一个三角形 onClick()
【发布时间】:2021-01-05 14:43:24
【问题描述】:

当按下(选中)三角形时,如果我按下右或左按钮,它将在我按下的三角形的右侧或左侧添加另一个三角形。

例如,假设我单击了主三角形 (ID 100),然后按下了右按钮,它应该在我的右侧添加一个三角形,并且它必须为新三角形分配一个唯一地址 (ID)

*在为三角形生成 ID 时,它必须是 3 位数(从 101 到 999)

例如,假设我点击了主三角形(ID 100),然后我按下了左按钮,它应该在我的左侧添加一个三角形,并且它必须有一个随机的 3 位数 ID。强>

假设我单击了主三角形 (ID 100),然后按下了左按钮和右按钮,它应该在我的左侧和右侧添加一个三角形。

如果已经有一个左三角形,然后用户再次按下左按钮,它不应该在左边添加任何东西,在右按钮上也是一样的。

用户点击三角形 (111) 然后按下左键

然后用户单击新三角形 (511) 并按下左右按钮 等等,我希望你有这个想法

怎么可能做出这样的布局。我想制作许多三角形布局并将它们放到单个ConstraintLayout 然后使它们成为android:visibility="gone" 但是我怎样才能使特定布局在点击时可见。我无法在 Java 中做到这一点。我该怎么办??

【问题讨论】:

  • 最好创建一个Custom-View。要开始使用,您可以查看一些可用开源自定义视图的源代码。

标签: java android android-layout


【解决方案1】:

你应该为每个视图设置id,放在XML中的应该有android:id attr,在运行时创建的应该有setId(View.generateViewId())

保留对每个 View 的引用(一些数组?或列表?),并使用 view.setVisibility(View.VISIBLE) 更改可见性

顺便说一句。我怀疑你是否通过分隔 Views 实现了你想要的(三角形),这应该使用自定义绘图来完成,在 onDraw 内部的一些自定义扩展 View 方法(这里有一些 DOC

【讨论】:

  • 我无法理解如何通过按向左或向右按​​钮将这些三角形放置在所选三角形的左右两侧。
  • 这应该是您的自定义逻辑,它将通过保持所有添加的三角形的位置(例如角点)来跟踪所有添加的三角形,以及何时添加新三角形然后根据当前存储的位置计算它的位置(位置) /添加三角形 - 这显然是数学问题,而不是编码......
  • 好的,知道了。但是如何计算放置视图的位置??
  • getXgetY 方法将为您提供每个显示的View 的左上角位置,也为您提供check out more useful methods。但我仍然认为它应该是一个 TrainglesView extends View 覆盖 onDraw 方法。 Android中的默认布局构建不提供非矩形Views,迟早你会遇到使用正方形Views作为三角形的问题,它们是具有共享边/角的邻居
  • 其实是drawable,不是view。我必须在它的左右放置更多的drawables
【解决方案2】:

这种设计通常不会是布局。您将使用单个自定义视图并自己绘制。

【讨论】:

  • 我该怎么做?
猜你喜欢
  • 1970-01-01
  • 2019-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多