如何在自定义视图中设置填充?

4
在我的应用程序中,我有一个自定义的TextView,在onDraw方法中使用Canvas在左侧具有一些箭头。我遇到的问题是文本的重力,因为我希望它居中。
我发现解决这个问题的唯一方法是设置自定义左填充,以便文本仅在应该的区域居中。为了找出这个填充,我需要先计算视图的大小。
问题是,如果我将其放入onMeasure或onLayout中,那么我会陷入循环中,使填充增加到最大值。这是因为setPadding导致这些方法再次执行。
如何解决这个问题?

setPadding 可以正常工作,但如果我将它放在 onMeasure 方法中,那么该方法会被再次调用,因此填充会递归增加... - Kandyzowana Papaja
在你的 View 构造函数中添加它 - pskink
为什么?为什么你需要高度?内边距就是内边距,如果你想在底部有5像素的内边距,你应该将其指定为“5”,而不是“高度-5”。 - pskink
因为它涉及到视图的高度。如果视图高度为100px,则填充为10px,如果高度为200px,则填充为20px,以此类推。 - Kandyzowana Papaja
不,我已经尝试过了,它也会导致循环。 - Kandyzowana Papaja
显示剩余6条评论
1个回答

1
如果您的视图是静态的且在充气时不更改其填充,则可以在onAttachedToWindow()中调用setPadding。它在添加视图到窗口时才会调用!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接