我想在android xml布局文件中显示一些UI元素。 我尝试制作一个应用程序,其中两个玩家可以坐在移动设备的每一端,并相互对战。
因此需要显示一些180度旋转的按钮。
这可能吗?我尝试了android:gravity,但这不起作用。
谢谢你的帮助, 马丁
答案 0 :(得分:5)
我建议您查看this thread,其中讨论了类似的问题。即使问题是关于TextView组件,Button也扩展了TextView,因此将它调整为按钮应该是微不足道的。该问题的OP最终确定了以下onDraw()
方法:
@Override
public void onDraw(Canvas canvas) {
//This saves off the matrix that the canvas applies to draws, so it can be restored later.
canvas.save();
//now we change the matrix
//We need to rotate around the center of our text
//Otherwise it rotates around the origin, and that's bad.
float py = this.getHeight()/2.0f;
float px = this.getWidth()/2.0f;
canvas.rotate(180, px, py);
//draw the text with the matrix applied.
super.onDraw(canvas);
//restore the old matrix.
canvas.restore();
}
我还会说我写了一个实现了这个onDraw()
方法的类,它运行得很好。
答案 1 :(得分:0)
因此需要显示一些180度旋转的按钮。
任何现有的Android小部件都不支持此功能,抱歉。
答案 2 :(得分:0)
您可以做的是扩展Button视图并覆盖onDraw()方法 这将为您提供一个画布,然后您可以旋转它,然后调用super.onDraw()让系统在旋转后绘制按钮。
答案 3 :(得分:0)
您也可以使用此示例。这样做比较好,因为你不需要按Y移动你的物品。
canvas.save();
canvas.scale(1f, -1f, super.getWidth() * 0.5f,
super.getHeight() * 0.5f);
canvas.drawBitmap(arrow,
rect.centerX() - (arrow.getWidth() * 0.5F), rect.bottom,
null);
canvas.restore();