Android: невозможно остановить перемещение текста

1

Я пытаюсь отобразить данные акселерометра в 3-х строках следующим образом:

X: 9,8 м/с2
Y: 0,0 м/с2
Z: -3.2 м/с2

Но независимо от того, что я пробовал, я не могу помешать перемещению m/s2 назад и вперед, когда одно из значений превышает 9.9 или отрицательное.

Например

До X: 0,0 м/с2

После X: -5.0 м/с2

Я попробовал tablelayout, но колонка просто растягивается, relativelayout, linearlayout и всевозможные комбинации дополнений, которые я могу придумать.

Здесь образец моего XML-кода, который находится внутри вертикальной линейной компоновки.

<LinearLayout           
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="X:"
    android:textSize="30sp" />
    <TextView
        android:id="@+id/x_value"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
        android:paddingLeft="30sp"
        android:paddingRight="30sp"
        android:text="        "
        android:textSize="30sp"/>
<TextView
        android:id="@+id/xAccelUnits"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="           "
        android:textSize="30sp" />
</LinearLayout>

Спасибо за вашу помощь!

Теги:

2 ответа

0
Лучший ответ

вам нужно зафиксировать размер текстового вида. Это может быть либо ширина в dp: layout_width = "30dp"

или вы можете использовать вес: layout_width = "0dp" layout_weight = "1" для каждого TextView, так что каждый занимает треть экрана (путем изменения веса и веса_sum в линейном макете, вы можете дать ширину в долях ширина экрана)

  • 0
    Фантастически, «layout_width» сделал свое дело. Я уже попробовал веса, но они были слишком расстраивающими, чтобы поправиться и продолжали сдвиг (возможно, что-то еще было не так). Я благодарен за ваше время!
  • 0
    без проблем. Что касается веса, ему нужна фиксированная ширина, чтобы работать так, как вы хотели бы, так как / оставшийся / пространство распределено (0 или более дп)
0

У меня была эта проблема сама, вот как я ее решил, с небольшой адаптацией к вашему делу:

DecimalFormat df = new DecimalFormat("#00.00000"); //put this somewhere where you don't have to recreate it every time you get a new value.
String xAcc = df.format(event.values[0]);
xValueView.setText(xAcc);

(Где xValueView - это TextView, в котором вы хотите отобразить значение)

  • 0
    Спасибо, но это не решило бы проблему с отрицательным числом. Я использовал функцию Math.round для достижения аналогичного результата.
  • 0
    На самом деле это так. Знак # гарантирует, что всегда есть либо -sign, либо пустое место. Я предпочитаю этот метод, так как вы всегда получаете десятичные дроби в одних и тех же точках.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню