2013-04-17 3 views
0

У меня есть RelativeLayout с ImageView и 8 TextView в нем. Я хочу динамически размещать метки вокруг этого изображения. Я думал, что лучший подход - повернуть изображение с интервалом 45 градусов и поместить метку в каждую позицию, однако Image/RelativeLayout не будет перерисовываться (даже если вызвано недействительность) до следующего предопределенного вызова onDraw и всех текстовых элементов после этого поместите в очередь сообщений для позиционирования, чтобы все TextViews располагались друг на друга на отметке 315 градусов.Android Layout/View Rotation/Positioning

Я пробовал отправлять 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); 
} 

EDIT: Благодаря JSchools для ответа, было не совсем то, что мне нужно, но указал мне правильное направление и информация были точными.

Для кого-то еще с той же проблемой, центрирование текста внутри TextView не будет разрезано. Я вручную должен был установить размер TextView намного выше, чем его предполагаемое использование, чтобы он точно располагался относительно изображения.

ответ

0

Вам необходимо установить поворот каждого отдельного TextView. Кажется, вы вращаете контейнер несколько раз, но так как все TextView находятся внутри контейнера, и все они имеют нулевое вращение относительно контейнера, они кажутся сложены. Не вращайте контейнер вообще. Вам также нужно будет установить положение TextViews так, чтобы они были расположены по кругу. Просто вращение их будет прилипать друг к другу.

Смежные вопросы