2013-08-06 3 views
0

Я использую горизонтальный LinearLayout для разделения прямоугольного блока экрана устройства на 3 равные части. Это выполняется с использованием весов. Целью этого является установка трех кнопок рядом, кнопки настроек, кнопки справки и кнопки контакта. По моим сведениям, должно следовать, что первая кнопка в LinearLayout находится слева, а следующая - посередине, а последняя справа, из-за правил иерархии LinearLayout. Это также показывает визуальный редактор. Но когда я запускаю приложение (и я пробовал на нескольких устройствах), кнопка контакта заканчивается слева, кнопка настроек заканчивается посередине, а кнопка справки заканчивается справа. Я попытался изменить иерархическую структуру кода (т. Е. Я разместил код для кнопки контакта над кодом для кнопки настроек и т. Д.), Но это не имело никакого значения для результата. Ниже приведен код для LinearLayout. Любая помощь приветствуется. Благодарю.Android: Кнопки обмена местами во время выполнения в горизонтальном, взвешенном LinearLayout?

<LinearLayout 
    android:id="@+id/icons" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:weightSum="100"> 

    <ImageButton 
     android:id="@+id/settings" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="33" 
     android:src="@drawable/settings" /> 

    <ImageButton 
     android:id="@+id/help" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="33" 
     android:src="@drawable/help" /> 

    <ImageButton 
     android:id="@+id/contact" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="33" 
     android:src="@drawable/contact" /> 

</LinearLayout> 

ответ

1

В XML-формате нет ничего плохого. Если приложение действительно использует вышеуказанный XML, то изменение порядка расположения ImageButtons в макете должно действительно изменить порядок на экране.

Вот 2 вещи, которые приходят на ум:

  1. Существует проблема с запуска процесса/сборки, а также обновленные изменения кода не отражают при запуске приложения. Я предлагаю внести изменения в некоторые очевидные ресурсы строки и проверить, если это проблема. Вы также должны сделать чистую сборку на всякий случай.
  2. У вас есть несколько файлов макета с тем же именем (например, один в макете /, а другой в макете-земле /), и вы не меняете правильный.
+0

+1 просто для «чистой сборки» – Geobits

+0

Спасибо. Чистая сборка. Eclipse может быть так странно иногда ... –