【发布时间】:2013-04-10 18:11:51
【问题描述】:
我有一个带有 ImageView 和 8 个 TextView 的 RelativeLayout。我想动态地在这个图像周围放置标签。我认为最好的方法是以 45 度的间隔旋转图像并在每个位置放置一个标签,但是 Image/RelativeLayout 直到下一个预先确定的 onDraw 调用和所有 TextViews 才会重绘(即使调用了 invalidate)之后将其放入消息队列中进行定位,因此所有 TextView 在 315 度标记处相互重叠。
我尝试将 Runnable 发布到 RelativeLayout,希望在 onDraw 调用后将其添加到消息队列中,但不幸的是它不起作用,我的想法已经用完了。
我当前的代码如下所示,以说明我正在尝试做什么:
public void setupMenuText() {
final float scale = getResources().getDisplayMetrics().density;
setupMenuItemText((TextView)findViewById(R.id.menu_text_pos0), (72*scale)+0.5f);
setupMenuItemText((TextView)findViewById(R.id.menu_text_pos1), (72*scale)+0.5f);
setupMenuItemText((TextView)findViewById(R.id.menu_text_pos2), (72*scale)+0.5f);
setupMenuItemText((TextView)findViewById(R.id.menu_text_pos3), (72*scale)+0.5f);
setupMenuItemText((TextView)findViewById(R.id.menu_text_pos4), (72*scale)+0.5f);
setupMenuItemText((TextView)findViewById(R.id.menu_text_pos5), (72*scale)+0.5f);
setupMenuItemText((TextView)findViewById(R.id.menu_text_pos6), (72*scale)+0.5f);
setupMenuItemText((TextView)findViewById(R.id.menu_text_pos7), (72*scale)+0.5f);
}
public void setupMenuItemText(TextView pT, float pY) {
relativeLayout.setRotation(relativeLayout.getRotation()+45);
pT.setText("Some Text");
pT.setRotation(0);
pT.setGravity(Gravity.CENTER_HORIZONTAL);
pT.setX(0);
pT.setY(pY);
}
编辑:感谢 JSchools 的回答,这并不完全是我所需要的,但为我指明了正确的方向,并且信息准确无误。
对于遇到同样问题的其他人,将文本居中放置在 TextView 内不会剪切它。我必须手动将 TextView 的大小设置为远高于其预期用途,以便相对于图像准确定位。
【问题讨论】:
标签: java android android-layout android-view