LinearLayout中的layout_weight无法正常工作 - 尝试了一切

时间:2015-05-16 17:59:03

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

LinearLayout中的

layout_weight让我疯狂。我已经在StackOverflow和网络上阅读了类似问题的 reams ,但没有解决我的问题。我已经复制了多个我遇到但仍然没有喜悦的样本。我的布局(下面)非常简单

我尝试了按钮宽度的多个值(fill_parent,wrap_content,0dp等)。还尝试在LinearLayout中明确设置weightSum = 5.0 -  所有宽度相同(坏)的结果。     

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
> 
<!-- TRIED BUTTON WIDTHS OF fill_parent, wrap_content, 0dp - SAME RESULT! -->
<!-- TRIED weightSum=5.0 FOR LinearLayout - SAME RESUT! -->
<Button 
  android:text="North"
  android:id="@+id/up"
  android:layout_width="0dp"
  android:layout_height="wrap_content"
  android:layout_weight="1.0"
/>
<Button
  android:text="South"
  android:id="@+id/down"
  android:layout_width="0dp"
  android:layout_height="wrap_content"
  android:layout_weight="1.0"
/>
  <Button
  android:text="West"
  android:id="@+id/left"
  android:layout_width="0dp"
  android:layout_height="wrap_content"
  android:layout_weight="1.0"
  />
<Button 
    android:text="East"
    android:id="@+id/right"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1.0"
/>
<Button 
  android:text="Exit"
  android:id="@+id/done"
  android:layout_width="0dp"
  android:layout_height="wrap_content"
  android:layout_weight="1.0"
/>
</LinearLayout>

不知道它是否相关,但是在我的手机从KitKat到Lollipop获得OTA更新后不久出现了这个问题。另外,我在自定义Dialog而不是Activity中使用此布局,如下所示。

Dlg = new Dialog( Ctx );
Dlg.setContentView(R.layout.nudge );
Dlg.setTitle( "Direction" );
Dlg.setCancelable(false);

下面的第一张图片显示了问题:按钮不会填充布局和文字换行。

奇怪的是,Eclipse图形布局(第二张图片)中的布局看起来很好。

enter image description here

enter image description here

我在这个问题上花了好几天没有快乐。 请帮忙!

2 个答案:

答案 0 :(得分:0)

我明白了!问题是(显然)窗口管理器覆盖了根LinearLayout中的fill_parent。为了阻止这种情况,我必须做以下事情:

            // CREATE DIALOG
            Dlg = new Dialog( Ctx );
            Dlg.setContentView(R.layout.mydialog );
            ...
            // SET DLG TO FULL WIDTH
            Window window = Dlg.getWindow();
            WindowManager.LayoutParams wlp;
            wlp = window.getAttributes();
            wlp.width=WindowManager.LayoutParams.MATCH_PARENT;
            window.setAttributes( wlp );

这不是100%的全宽,而是接近(我猜90%)这对我来说很好。

答案 1 :(得分:0)

你几乎成功了。试试吧:

  1. 添加android:weightSum =&#34; 5&#34;在linearLayout中
  2. 添加android:testSize =&#34; ...&#34;在每个按钮。此时,您应该填写这些testSize以获得最佳视图。