【问题标题】:How to specify sensible custom view dimensions when in Android Studio Design mode如何在 Android Studio 设计模式下指定合理的自定义视图尺寸
【发布时间】:2021-12-27 10:05:55
【问题描述】:

在 Android Studio 的布局编辑器中使用设计模式时,我想控制自定义视图的初始大小和显示方式。

例如,下面的琐碎视图(从教程博客复制),当添加到 ConstraintLayout 时,默认为 wrap_contentlayout_widthlayout_height。它在预览中显示为填充父视图。这可能会导致难以操纵布局“blob”以实现所需的布局。

更糟糕的是,当我从调色板直接拖动到设计图面时,视图会出现 x 和 y 偏移,这会将底部和右侧的“斑点”完全移出设计图面。 detail from layout editor

如果我能够为自定义视图提供合理的默认值,这将非常有用,就像常规按钮视图一样。

class MyView(context: Context, attrs: AttributeSet) : View(context, attrs) {

    private val myPaint = Paint().apply {
        style = Paint.Style.STROKE
        color = Color.RED
        strokeWidth = 30f
    }

    override fun onDraw(canvas: Canvas) {
        val left = paddingLeft.toFloat()
        val top = paddingTop.toFloat()
        val right = width.toFloat() - paddingRight
        val bottom = height.toFloat() - paddingBottom
        canvas.drawLine(left, bottom, right, top, myPaint)
    }
}

【问题讨论】:

    标签: android android-studio android-custom-view


    【解决方案1】:

    好的,我找到了我想要的答案。

    我需要实现onMeasure,详见this answer 对另一个问题。请特别注意 MeasureSpec 模式设置为 MeasureSpec.AT_MOST 的情况,因为这是指定 wrap_content 时使用的模式。由于 Android Studio 布局编辑器默认为两个维度都设置了wrap_content,因此从调色板中拖动视图时将具有此大小。

    【讨论】:

      猜你喜欢
      • 2014-03-03
      • 2017-06-19
      • 1970-01-01
      • 2016-07-07
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多