【问题标题】:Most efficient way to construct the layout构建布局的最有效方法
【发布时间】:2012-11-29 09:06:07
【问题描述】:

我会有数百个这样的布局(请参见下图),所以我需要以最有效的方式构建它。有三个区域,两个第一个按底线对齐,左边一个包含ImageView,第二个两个TextViews 一个在另一个下。在第二个视图下还有另一个视图 TextView。我应该使用TableLayout 作为容器,使用LinearLayout 作为第二个容器吗?会不会有效率?谢谢。

【问题讨论】:

  • 你想让你的文本在图像视图下方展开吗?
  • 不,底部的 TextView 不应该在图像视图下方展开。
  • @siik :请参阅下面的答案

标签: android android-layout


【解决方案1】:

试试这个

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<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_marginLeft="41dp"
    android:layout_marginTop="39dp"
    android:src="@drawable/ic_launcher" />

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@+id/imageView1"
    android:layout_marginLeft="10dp"
    android:layout_toRightOf="@+id/imageView1"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView 1" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView 2" />
</LinearLayout>

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/linearLayout1"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/imageView1"
    android:text="TextView" />

【讨论】:

  • 我不需要底部的TextView在ImageView下展开
【解决方案2】:

第一个建议是让 ImageView “更高”,使其在高度上覆盖两个 TextView,或者使底部 TextView 更宽以覆盖 ImageView 和上部 TextView..

在我看来会更好看,这个空旷的空间让我的眼睛刺痛..

然后我会推荐 TableLayout,当然还有这个布局在单独的文件中,所以你可以用 include 重用它.. ;)

干杯,希望对你有帮助

【讨论】:

    【解决方案3】:

    RelativeLayout 中,您应该添加Image ViewAlignParentLeft="true"alignParenttop = "true",然后将第一个TextView 添加为imageView 的RightOff,第二个文本视图将其添加到LayoutBottomTextView

    使用Relative Layouts,它们被认为比Linear Layouts更轻。

    【讨论】:

      【解决方案4】:

      试试这个,它会为您提供您在问题中描述的布局:

          <LinearLayout 
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
              android:orientation="horizontal"
              >
              <ImageView 
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:src="@drawable/img" />
      
              <RelativeLayout 
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1">
      
                 <TextView 
                    android:id="@+id/txt1"
                    android:layout_alignParentTop="true"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="textView1" />
      
                <TextView 
                   android:id="@+id/txt2"
                   android:layout_below="@+id/txt1"
                   android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:text="textView1" />
             </RelativeLayout>
         </LinearLayout>
      

      【讨论】:

        【解决方案5】:

        试试这个:

        <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/bg_l_l"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:orientation="horizontal" >
        
            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_launcher" />
        
            <LinearLayout
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/bg_l_l"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical" >
        
                <TextView
                    android:id="@+id/textView1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="chintan"
                    android:textAppearance="?android:attr/textAppearanceMedium" />
        
                <TextView
                    android:id="@+id/textView2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="khetiya"
                    android:textAppearance="?android:attr/textAppearanceMedium" />
        
                <LinearLayout
                    xmlns:android="http://schemas.android.com/apk/res/android"
                    android:id="@+id/bg_l_l"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="vertical" >
        
                    <TextView
                        android:id="@+id/textView3"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="this is extra text and this will not spred under the imageview as you can see."
                        android:textAppearance="?android:attr/textAppearanceMedium" />
                </LinearLayout>
            </LinearLayout>
        
        </LinearLayout>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-02-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多