Android:按钮在运行时以水平加权LinearLayout交换位置?

时间:2013-08-06 22:42:34

标签: android android-layout android-layout-weight

我正在使用水平LinearLayout将设备屏幕的矩形块分成3个相等的部分。这是使用权重完成的。

这样做的目的是并排放置3个按钮,设置按钮,帮助按钮和联系人按钮。据我所知,应该遵循LinearLayout中的第一个按钮位于左侧,下一个位于中间,最后一个位于右侧,这是由于LinearLayout的层次结构规则。

这也是Visual Editor也显示的内容。但是当我运行应用程序时(我已尝试使用多个设备),联系人按钮最左端,设置按钮最终位于中间,帮助按钮最终位于右侧。

我尝试更改代码的层次结构(即我将联系按钮的代码放在设置代码按钮上方等)但是它对结果没有任何影响。

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 个答案:

答案 0 :(得分:1)

XML没有任何问题。如果应用程序确实使用了上述XML,那么更改布局中ImageButtons的顺序确实应该改变屏幕上的顺序。

这是我想到的两件事:

  1. 您的构建/运行过程存在问题,并且在运行应用程序时不会反映更新的代码更改。我建议对一些明显的字符串资源进行更改,并测试是否存在问题。你也应该做一个干净的构建以防万一。
  2. 您有多个具有相同名称的布局文件(例如,布局中的一个/布局中的另一个/ land /),并且您没有更改正确的布局文件。