2013-10-31 75 views
0

請看看下面的代碼傳播文本匹配父寬度

<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" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".SalesInqury" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:text="@string/sales_inqury" 
     android:textSize="40sp" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView1" 
     android:layout_marginLeft="21dp" 
     android:layout_toRightOf="@+id/textView1" 
     android:src="@drawable/add_2" /> 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/textView1" 
     android:layout_alignParentRight="true" 
     android:layout_marginTop="16dp" 
     android:hint="Search" 
     android:ems="8" > 

     <requestFocus /> 
    </EditText> 

</RelativeLayout> 

這將生成以下輸出

enter image description here

說實話,這不是我想要的。文本應該「擴展」以匹配屏幕寬度,直到找到圖像視圖。我認爲改善字母之間的空間可能是解決方案。

但我想知道是否有更好的解決方案,我們可以在Code或XML中完成。

+0

您使用WRAP_CONTENT,將根據其尺寸比 這場比賽母公司收購其他地區/填寫父母可以有利於你更友好 –

回答

0

如果我找到你的話,你需要EditText在「Sales Inquiry」下面。

<LinearLayout 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" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:orientation="vertical" 
    tools:context=".SalesInqury" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:drawableRight="@drawable/add_2" 
     android:text="@string/sales_inqury" 
     android:textSize="40sp" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="right" 
     android:layout_marginTop="16dp" 
     android:hint="Search" 
     android:ems="8" > 

     <requestFocus /> 
    </EditText> 

</LinearLayout> 

注意我用drawableRight替換了ImageView。它被稱爲compoundDrawable,它可以設置爲TextView文本附近的任何位置。 這裏沒有必要使用RelativeLayout。垂直LinearLayout應該做的伎倆。

layout_width="match_parent" 

告訴視圖應該分佈在整個佈局的寬度上。

但是,如果您希望EditText與「Sales Inquiry」位於同一行,那麼就完成了這一行。

<LinearLayout 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" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:orientation="horizontal" 
    tools:context=".SalesInqury" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" 
     android:drawableRight="@drawable/add_2" 
     android:text="@string/sales_inqury" 
     android:textSize="40sp" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:layout_gravity="center_vertical" 
     android:layout_marginTop="16dp" 
     android:hint="Search" 
     android:ems="8" > 

     <requestFocus /> 
    </EditText> 

</LinearLayout> 

使用水平LinearLayout,將第一個TextView的layout_width設置爲wrap_content。 EditText應該使用layout_weight =「1」(僅適用於LinearLayout),這意味着它將佔用盡可能多的空間。在水平LinearLayout中使用layout_weight時,將layout_width設置爲0dp。如果它是垂直的LinearLayout,layout_height應該是0dp。

0

嘿我在你的代碼做了一些改變。我使用LinerLayout而不是相對佈局。

<LinearLayout 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" 

    android:orientation="horizontal" 
    android:weightSum="3.0f" 
    > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1.0f" 
     android:textSize="40sp" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1.0f" 
     android:layout_marginLeft="21dp" 

     /> 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1.0f" 
     android:hint="Search" 
     android:ems="8" > 

     <requestFocus /> 
    </EditText> 

</LinearLayout> 
+0

您應該更換了複合繪製的ImageView的。也。我想知道這是他想要的。我以爲他想要「銷售查詢」下方的EditText。另外,如果在水平LinearLayout中使用layout_weight,則應該設置layout_width =「0dp」 –