如何正确使用重量属性?

时间:2013-07-09 09:30:18

标签: android android-linearlayout relativelayout

我想实现下面的布局,其中有一个textview和image的修复空间。

我使用的是相对布局,它没有“weight”属性。如何使用LinearLayout实现以下布局?

enter image description here

以下是我的代码

              <RelativeLayout>
                <TextView
            android:id="@+id/txt"
            android:paddingLeft="5dp"               
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"                 
            android:gravity="left" 
            android:textSize="14dp"     
            android:textColor="@android:color/white"/>        

              <TextView
                   android:id="@+id/date_n_time"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content" 
           android:padding="5dp"        
                   android:textColor="#E0FFFF"       
                   android:layout_below="@+id/txt"  />   

               <ImageView  android:id="@+id/imageview"
                   android:layout_height="wrap_content"
                   android:paddingRight="5dp"          
                   android:contentDescription="Image"
                   android:layout_width="wrap_content"          
                   android:layout_alignParentRight="true"
                   android:src="@drawable/icon"/>
      </RelativeLayout> 

我使用RelativeLayout来放置textview和图像,如上图所示。但textview和imageview相互重叠。

4 个答案:

答案 0 :(得分:0)

您可以通过在文本视图右侧或图像视图左侧提供填充/边距来提供固定空间。或者,如果您想使用线性布局,则为文本视图提供7的权重,为图像视图提供3的权重。

答案 1 :(得分:0)

LinearLayoutlayout_weightSumlayout_weight一起使用。

以下是将屏幕垂直划分为2个部分的示例。

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" 
        android:layout_weigthSum="1">

     <LinearLayout 
         android:layout_width="fill_parent"
         android:layout_height="0dp"
         android:layout_weight="0.9">

        <ListView
            android:id="@+id/frontpagetasklistid"
            android:layout_width="fill_parent"
            android:layout_height="375dp" >

        </ListView>
        </LinearLayout>
        <LinearLayout 
         android:layout_width="fill_parent"
         android:layout_height="0dp"
         android:layout_weight="0.1">

        <RelativeLayout 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            >
        <EditText 
            android:id="@+id/edittextidAddTodayTask"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:background="@drawable/edittextselector"
            android:hint="Add Today Task"/>

        <ImageButton
            android:id="@+id/imagebuttonidAddTodayTask"
            android:layout_width="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:src="@drawable/addtask" />

        </RelativeLayout>
        </LinearLayout>

    </LinearLayout>

答案 2 :(得分:0)

你应该使用水平方向的linearLayout,在内部放置textView和imageView,将layout_width设置为0dp,并将权重设置为你希望它们具有的任何相对权重,例如

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

<TextView 
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="4"
/>

<ImageView 
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1"

/>
</LinearLayout>

textView的权重为4,imageView的权重为1,这意味着textview将获得4/5的空间,textView将获得1/5的空间,只需尝试一下< / p>

答案 3 :(得分:0)

您可以轻松地将TextView放在图像左侧,如下所示:

android:layout_toLeftOf="@+id/yourimg"

添加保证金,您应该能够轻松实现此布局