Android布局/查看旋转/定位

时间:2013-04-17 20:05:05

标签: java android android-layout android-view

我有一个带有ImageView和8个TextView的RelativeLayout。我想动态地在这个图像周围放置标签。我认为最好的方法是以45度的间隔旋转图像并在每个位置放置一个标签,但是Image / RelativeLayout不会重绘(即使调用了invalidate),直到下一个预定的onDraw调用,以及所有的TextViews在此之后放入消息队列进行定位,因此所有TextViews都以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的大小设置为远高于其预期用途,以便相对于图像准确定位。

1 个答案:

答案 0 :(得分:0)

您需要设置每个TextView的旋转。您似乎多次旋转容器,但由于所有TextView都在容器内部,并且它们相对于容器都没有旋转,因此它们似乎是堆叠的。根本不要旋转容器。您还需要设置TextView的位置,以便将它们排列成圆形。只需旋转它们就会将它们粘在一起。