【问题标题】:Android layout: Use margin/padding or nested layouts?Android 布局:使用边距/填充或嵌套布局?
【发布时间】:2013-03-19 06:58:29
【问题描述】:

我正在尝试在 Android 中完成布局,但不知道该怎么做。基本上我试图让它看起来像这样:

+-----------------------------------------+
|           Text #1                       |
| img1 img2 Text #2                  img3 |
+-----------------------------------------+

文本#1 和文本#2 应该对齐,正如我试图说明的那样。我正在考虑两种不同的方法:

+-----------------------------------------+
|<- margin->Text #1                       |
+-----------------------------------------+
| img1 img2 Text #2                  img3 |
+-----------------------------------------+

或者

+----------+-------+----------------------+
|          |Text #1|                      |
|          +-------+
| img1 img2|Text #2|                 img3 |
+----------+-------+----------------------+

我更喜欢后者,但带有 Text #1/#2 的 LinearLayout 会折叠,因此 Text #2 不可见。

这两种解决方案都嵌套在 RelativeLayout 中。我尝试将包含左侧部分的 LinearLayout 的重力设置为“left”,将 img3 设置为“right”,但显然只能将重力分配给周围的 RelativeLayout 对吗?至少我无法使用重力右对齐。

如果我微弱的图纸有意义,谁能指导我选择正确的方法?

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    我会在里面使用相对布局:

    linearLayout : parentBottom + vertical orientation
      tv1
      tv2
    img2: parentBottom + leftOf layout
    img1: parentBottom + leftOf img2
    img3 : parentBottom + rightOf layout
    

    【讨论】:

      【解决方案2】:

      您可以使用WEIGHTSUM 属性进一步平均划分这 3 个线性布局

      <LinearLayout
          android:layout_width="wrap_content"
          android:layout_height="80dip"
          android:orientation="horizontal">
      
          <ImageView            
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:scaleType="fitXY"
              android:src="@drawable/img2"/>
      
          <ImageView            
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:scaleType="fitXY"
              android:src="@drawable/img2"/>
      </LinearLayout>
      
      
      
          <LinearLayout
              android:layout_width="wrap_content"
              android:layout_height="80dip"
              android:orientation="vertical" 
              android:weightSum="1">
      
              <TextView
                  android:id="@+id/direzione"
                  android:layout_width="wrap_content"
                  android:layout_height="0dip"
                  android:layout_weight="0.5"                
                  android:text="Text View 1"
                  android:textColor="#000000"/>
      
              <TextView
                  android:id="@+id/direzione_value"
                  android:layout_width="wrap_content"
                  android:layout_height="0dip"
                  android:layout_weight="0.5" 
                  android:text="Text View 2"
                  android:textColor="#000000" />
          </LinearLayout>
      
          <LinearLayout
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:orientation="horizontal" >
      
             <ImageView            
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:scaleType="fitXY"
              android:src="@drawable/img2"/>
          </LinearLayout>
      

      【讨论】:

        【解决方案3】:

        我使用 weightSum 和方向根据您的需要创建布局

        试试这个:

        <?xml version="1.0" encoding="utf-8"?>
            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/homeTableLayout"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="horizontal"
                android:weightSum="10"
                 >
        
                <LinearLayout
                     android:layout_width="0dip"
                android:layout_height="fill_parent"
                android:orientation="horizontal"
                android:weightSum="10"
                android:layout_weight="2"
                    >
             <ImageView
                 android:layout_height="50dip" 
                 android:layout_width="0dip"
                 android:background="@android:color/holo_blue_dark"
                 android:layout_weight="5"
                 />
             <ImageView
                 android:layout_height="50dip" 
                 android:layout_width="0dip"
                 android:background="@android:color/holo_green_dark"
                 android:layout_weight="5"
                 />
             </LinearLayout>
             <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/homeTableLayout"
                android:layout_width="0dip"
                android:layout_height="fill_parent"
                android:orientation="vertical"
                android:layout_weight="3"
                 >
                 <TextView
                      android:layout_width="fill_parent"
                      android:layout_height="25dip"
                      android:text="testing"
                      android:background="@android:color/holo_orange_dark"
                     />
                 <TextView
                      android:layout_width="fill_parent"
                      android:layout_height="25dip"
                      android:text="testing"
                      android:background="@android:color/holo_purple"
                     />
        
             </LinearLayout>
        
             <LinearLayout
                     android:layout_width="0dip"
                android:layout_height="fill_parent"
                android:orientation="horizontal"
               android:layout_weight="5"
                    >
             <ImageView
                 android:layout_height="50dip" 
                 android:layout_width="fill_parent"
                 android:background="@android:color/holo_blue_dark"
        
                 />
        
             </LinearLayout>
            </LinearLayout>
        

        下面是线框。根据您的需要更改它:

        【讨论】:

        • 谢谢!当我回到我的代码时会试一试:-) weightSum...从来没有听说过...
        • weightsum 定义控制在高度或宽度上占据多少区域。
        【解决方案4】:

        试试这个

        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/RelativeLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        
        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginTop="68dp"
            android:src="@drawable/ic_launcher" />
        
        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/imageView1"
            android:layout_marginLeft="19dp"
            android:layout_toRightOf="@+id/imageView1"
            android:src="@drawable/ic_launcher" />
        
        
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/imageView2"
            android:layout_alignTop="@+id/imageView2"
            android:layout_marginLeft="34dp"
            android:layout_toRightOf="@+id/imageView2"
            android:text="Large Text"
            android:gravity="center"
            android:textAppearance="?android:attr/textAppearanceLarge" />
        
        
        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/textView1"
            android:layout_alignRight="@+id/textView1"
            android:layout_marginBottom="16dp"
            android:text="Large Text"
            android:textAppearance="?android:attr/textAppearanceLarge" />
        
        <ImageView
            android:id="@+id/imageView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignTop="@+id/textView1"
            android:src="@drawable/ic_launcher" />
        

        如果不工作请亲密

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-02-28
          • 1970-01-01
          • 2012-06-02
          • 1970-01-01
          • 1970-01-01
          • 2013-11-23
          • 2022-01-16
          • 2010-10-11
          相关资源
          最近更新 更多