在代码中旋转按钮(或文本内部)

Edo*_*tra 5 android rotation button

我必须通过编码随机旋转一个按钮(或内部文本,它是相同的).API级别中的任何button.setRotate(x)是否低于11?

小智 4

好吧,看了一下,答案是:很复杂。

您可以使用旧的动画框架旋转按钮,例如:

Button button = (Button) findViewById(R.id.button);

// rotation from 0 to 90 degrees here
RotateAnimation a = new RotateAnimation(0, 90);
a.setFillAfter(true);
a.setDuration(0);
button.startAnimation(a);
Run Code Online (Sandbox Code Playgroud)

这里的问题是按钮看起来旋转了,但无法正确点击。触发点击事件的坐标是按钮旋转之前所在区域的坐标。

由于这不是一个很好的解决方案,因此最好的选择可能是编写一个自定义视图来扩展 Button 类并在onDraw(). 在这种情况下,您还必须覆盖onMeasure()。请参阅自定义组件以了解要做什么的介绍。

除此之外,您可以尝试拦截来自按钮父布局的单击事件,并在单击发生在按钮当前坐标内时触发适当的事件。但这有点“hacky”。