2011-12-21 1 views
0

Недавно я работал над своим первым андроидным приложением, которое преобразуется в разные температуры. У меня есть все фактическое кодирование, но у меня проблема с созданием графического интерфейса. Я использую построитель пользовательского интерфейса DroidDraw для генерации кода xml; Внутри DroidDraw я использую RelativeLayout на протяжении всего пользовательского интерфейса. Whenver создать его в DroidDraw она выглядит хорошо в предварительном просмотре, но когда я пытаюсь запустить приложение, он всегда заканчивает тем, что, как в основном перемешаны беспорядок:Android App GUI

screenshot

Имеет ли это что-либо из-за требований для разных размеров экрана, и если да, то как я могу это исправить?

Добавление дополнительной информации, я не запускаю ее через эмулятор; Я запускаю его на моем пленщике, который имеет экран 480x800. Кроме того, я использую среду IDE NetBeans с плагином NBAndroid.

Вот мой [main.xml] [2] Файл:

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout 
    android:id="@+id/widget32" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    > 
    <EditText 
     android:id="@+id/input" 
     android:layout_width="100px" 
     android:layout_height="wrap_content" 
     android:textSize="18sp" 
     android:layout_alignTop="@+id/output" 
     android:layout_alignParentLeft="true" 
     > 
    </EditText> 
    <TextView 
     android:id="@+id/widget42" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Output" 
     android:layout_below="@+id/ftok" 
     android:layout_alignLeft="@+id/ktoc" 
     > 
    </TextView> 
    <TextView 
     android:id="@+id/widget41" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Input" 
     android:layout_below="@+id/ftok" 
     android:layout_alignParentLeft="true" 
     > 
    </TextView> 
    <Button 
     android:id="@+id/ftok" 
     android:layout_width="104px" 
     android:layout_height="wrap_content" 
     android:text="Far To Kel" 
     android:textStyle="bold" 
     android:layout_alignTop="@+id/ctok" 
     android:layout_alignParentLeft="true" 
     > 
    </Button> 
    <Button 
     android:id="@+id/ctok" 
     android:layout_width="104px" 
     android:layout_height="wrap_content" 
     android:text="Cel To Kel" 
     android:textStyle="bold" 
     android:layout_alignTop="@+id/ktoc" 
     android:layout_alignLeft="@+id/ctof" 
     > 
    </Button> 
    <Button 
     android:id="@+id/ktoc" 
     android:layout_width="104px" 
     android:layout_height="wrap_content" 
     android:text="Kel To Cel" 
     android:textStyle="bold" 
     android:layout_below="@+id/ctof" 
     android:layout_alignParentRight="true" 
     > 
    </Button> 
    <Button 
     android:id="@+id/ctof" 
     android:layout_width="104px" 
     android:layout_height="wrap_content" 
     android:text="Cel To Far" 
     android:textStyle="bold" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     > 
    </Button> 
    <Button 
     android:id="@+id/ktof" 
     android:layout_width="104px" 
     android:layout_height="wrap_content" 
     android:text="Kel To Far" 
     android:textStyle="bold" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true" 
     > 
    </Button> 
    <Button 
     android:id="@+id/ftoc" 
     android:layout_width="104px" 
     android:layout_height="wrap_content" 
     android:text="Far To Cel" 
     android:textStyle="bold" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     > 
    </Button> 
    <TextView 
     android:id="@+id/widget50" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Temperature Conversion is Fun!" 
     android:textSize="16sp" 
     android:textStyle="bold" 
     android:layout_below="@+id/widget49" 
     android:layout_toRightOf="@+id/widget41" 
     > 
    </TextView> 
    <TextView 
     android:id="@+id/widget49" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Kel=Kelvin" 
     android:layout_below="@+id/widget48" 
     android:layout_alignLeft="@+id/ctok" 
     > 
    </TextView> 
    <TextView 
     android:id="@+id/widget48" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Cel=Celcius" 
     android:layout_below="@+id/widget47" 
     android:layout_alignLeft="@+id/ctok" 
     > 
    </TextView> 
    <TextView 
     android:id="@+id/widget47" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Far=Fahrenheit" 
     android:layout_below="@+id/input" 
     android:layout_alignLeft="@+id/ctok" 
     > 
    </TextView> 
    <EditText 
     android:id="@+id/output" 
     android:layout_width="100px" 
     android:layout_height="wrap_content" 
     android:textSize="18sp" 
     android:layout_below="@+id/widget42" 
     android:layout_toRightOf="@+id/ctok" 
     > 
    </EditText> 
</RelativeLayout> 

Любая помощь будет оценена.

ответ

0

Поскольку виртуальная машина Dalvik сильно основана на виртуальной машине Java, и я программист на Java, я могу предложить небольшой совет. Если API-интерфейс дроида имеет эквивалент JPanel, организуйте материал с помощью панелей (похоже, вы можете это сделать уже). Кроме того, проверьте, есть ли в кадре тип функции «Обновить»() - обычно это помогает сообщать в окно, чтобы организовать материал соответствующим образом.

3

Я никогда раньше не использовал droiddraw для макетов реального мира и просто загружал его, чтобы немного проверить его.
И из того, что я вижу: я бы не рекомендовал его использовать.

Все созданные макеты по умолчанию используют px как единицу, чтобы указать размеры вида. То есть очень плохой идея с точки зрения макетов телефонов android (из-за большого размера экрана/плотности вокруг) и почти никогда не должно быть необходимым (Мне еще нужно найти макет, где это полезно). И что еще хуже, я не могу указать какой-либо другой элемент на вкладке свойств.

Это приводит к конкретным проблемам, которые вы видите. Макеты, которые выглядят корректно по размеру экрана, для которого они были созданы и ужасно терпят неудачу на каждом другом экране.

Я рекомендую писать XML вручную. Или, если вы предпочитаете использовать редактор WYSIWYG, используйте плагин eclipse ADT, который недавно улучшил редактор.

+0

+1 Использование 'px' - это почти наверняка проблема. Если это DroidDraw по умолчанию, это ошибка дизайна. –

+0

Это не только по умолчанию, я не могу вообще использовать 'dp', в этом случае возникает ошибка. Слышал, что некоторые люди считают этот инструмент полезным, мне интересно, не хватает ли я чего-то здесь. –

+0

@alextsc Спасибо за ваш ответ, я дам плагин eclipse вихрем. – user966126