java - 安卓:LinearLayout权重

标签 java android android-layout

我正在努力使我的布局更加统一。我有一个线性布局,如下所示:

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout android:id="@+id/LinearLayout01"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1">

            <TextView 
                android:id="@+id/lblQuote" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"/>
        </LinearLayout>

        <LinearLayout 
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1">
           <TextView 
                android:id="@+id/lblLikes" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="4pt"
                android:text="27"/>
           <ImageView
                android:id="@+id/imgUp"
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:src="@drawable/thumbsup"/>
           <TextView 
                android:id="@+id/lblBuzzedTitle" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="4pt"
                android:text="Buzz Level:"/>
            <TextView 
                android:id="@+id/lblShared" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="4pt"/>
            <TextView 
                android:id="@+id/lblSaid" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="4pt"/> 
        </LinearLayout>
        <LinearLayout 
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1">
          <TextView 
                android:id="@+id/lblHates" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="4pt"
                android:text="14"/>
            <ImageView
                android:id="@+id/imgDown"
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:src="@drawable/thumbsdn"/>
           <TextView 
                android:id="@+id/lblBuzzed" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="4pt"/>
            <TextView 
                android:id="@+id/lblDate" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="4pt"/>
            <TextView 
                android:id="@+id/lblLocation" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="4pt"/> 
        </LinearLayout>
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1">
          <TextView
            android:text=" "
            android:textSize="1pt"
            android:background="#6F7285"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>  

        </LinearLayout>
</LinearLayout>

所以我切换到这个:

    <?xml version="1.0" encoding="utf-8"?>  
<LinearLayout android:id="@+id/LinearLayout01"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:weightSum="1">

            <TextView 
                android:id="@+id/lblQuote" 
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:layout_weight="1"/>
        </LinearLayout>

        <LinearLayout 
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:weightSum="8">
           <TextView 
                android:id="@+id/lblLikes" 
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:layout_weight="1"
                android:textSize="4pt"
                android:text="27"/>
           <ImageView
                android:id="@+id/imgUp"
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:layout_weight="1"
                android:src="@drawable/thumbsup"/>
           <TextView 
                android:id="@+id/lblBuzzedTitle" 
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:layout_weight="2"
                android:textSize="4pt"
                android:text="Buzz Level:"/>
            <TextView 
                android:id="@+id/lblShared" 
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:layout_weight="2"
                android:textSize="4pt"/>
            <TextView 
                android:id="@+id/lblSaid" 
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:layout_weight="2"
                android:textSize="4pt"/> 
        </LinearLayout>
        <LinearLayout 
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:weightSum="8">
          <TextView 
                android:id="@+id/lblHates" 
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:layout_weight="1"
                android:textSize="4pt"
                android:text="14"/>
            <ImageView
                android:id="@+id/imgDown"
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:layout_weight="1"
                android:src="@drawable/thumbsdn"/>
           <TextView 
                android:id="@+id/lblBuzzed" 
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:layout_weight="2"
                android:textSize="4pt"/>
            <TextView 
                android:id="@+id/lblDate" 
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:layout_weight="2"
                android:textSize="4pt"/>
            <TextView 
                android:id="@+id/lblLocation" 
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:layout_weight="2"
                android:textSize="4pt"/> 
        </LinearLayout>
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:weightSum="1">
          <TextView
            android:text=" "
            android:textSize="1pt"
            android:background="#6F7285"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>  

        </LinearLayout>
</LinearLayout>

这样做后,我的布局在模拟器中变为空白。请指教。我不想切换到相对布局,我只想知道我在这段代码中做错了什么。谢谢。

#

2011 年 6 月 3 日编辑:

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout android:id="@+id/LinearLayout01"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
            <TextView 
                android:id="@+id/lblQuote" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Filler Text"/>
        </LinearLayout>
        <LinearLayout 
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="left">
           <ImageView
                android:id="@+id/imgUp"
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:src="@drawable/thumbsup"
                android:layout_gravity="left"/>
           <TextView 
                android:id="@+id/lblLikes" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="4pt"
                android:text="10"
                android:layout_gravity="left"/>

           <TextView 
                android:id="@+id/lblBuzzedTitle" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:textSize="4pt"
                android:text="Buzz Level:"/>
            <TextView 
                android:id="@+id/lblShared" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:text="Shared By: Filler Name"
                android:textSize="4pt"/>
            <TextView 
                android:id="@+id/lblSaid" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:text="Said By: Filler Name"
                android:textSize="4pt"/> 
        </LinearLayout>
        <LinearLayout 
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="left">
            <ImageView
                android:id="@+id/imgDown"
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:src="@drawable/thumbsdn"
                android:layout_gravity="left"/>
          <TextView 
                android:id="@+id/lblHates" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="4pt"
                android:text="2"
                android:layout_gravity="left"/>

           <TextView 
                android:id="@+id/lblBuzzed" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:text="High"
                android:textSize="4pt"/>
            <TextView 
                android:id="@+id/lblDate" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:textSize="4pt"
                android:text="04/04/1987 4:32 PM"/>
            <TextView 
                android:id="@+id/lblLocation" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:textSize="4pt"
                android:text="Broomfield, CO"/> 
        </LinearLayout>
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:weightSum="1">
          <TextView
            android:text=" "
            android:textSize="1pt"
            android:background="#6F7285"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>  

        </LinearLayout>
</LinearLayout>

enter image description here

最佳答案

在第二个版本中,您的第一个嵌套 LinearLayout 的 layout_height 为 fill_parent。这会将其他所有内容推下屏幕。每当您看到自己使用 layout_weight 而同时对宽度和高度都使用 fill_parent 时,您就知道自己做错了什么。

你到底想完成什么?

顺便说一下,您不需要像现在这样使用 weightSum。如果你不指定它,它会自动总结所有 subview 的 layout_weight 值。它的主要用途是仅分配总可用额外空间的一小部分。

关于java - 安卓:LinearLayout权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6222718/

相关文章:

Java 运行时多态性不适用于不同的参数类型

java - 我需要在 sqlite 中进行搜索并部署相同的数据与新参数进行比较

android - AirDroid - 它是如何工作的

android - Android 中打开对话框时拦截 HOME 键

java - 我们可以在不使用 Java 中的 return 的情况下为传入参数的对象赋值吗?

Java 返回 null 和结果

java - 图像的错误 URL 编码

java - XML 格式不正确

android - 在 FrameLayout 中将 Progressbar 设置在 WebView 的中心

java - 在 Activity 中设置谷歌分析跟踪器时,类型 Activity 的 getActivity() 方法未定义