【问题标题】:Android Layout/View Rotation/PositioningAndroid 布局/视图旋转/定位
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多