2013-02-13 47 views
1

我已經創建了這個名爲searchfragment的片段。下面是searchfragment的佈局XML文件。不幸的是,設計並不像我想要的那樣流暢。如何優化此佈局XML文件以符合我的想法?

這裏就是我想要它看起來像: 第一行:歡迎文本(的作品) 第二行:搜索輸入字段(這樣的作品,太) Thirt行(這裏情況就變得複雜):應該有一個名爲「搜索」的文本,然後是一個可以搜索的項目(例如名稱,年份,價格)的微調器。然後是搜索按鈕。接下來的事情是你可以對輸出進行排序。因此,有一個文本「排序」,一個微調批評和排序按鈕。最好的情況下,搜索部分應該對齊左側,排序的權利,但仍居中。 第四行:輸出字段。 現在,由於所有元素都顯示在我的設備上,因此它們不在Eclipse的圖形佈局中。我已經嘗試了好幾個小時來讓它工作,但是如果你沒有找到你的對象,這很難。

長文本 - 短任務:請幫我優化我的設計。

searchfragment.xml:

<?xml version="1.0" encoding="utf-8"?> 
<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:layout_gravity="center" 
    android:orientation="vertical" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp" 
     android:layout_gravity="center" 
     android:text="@string/welcome" /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <EditText 
      android:id="@+id/edit_message" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="20dp" 
      android:layout_marginRight="20dp" 
      android:hint="@string/edit_message" /> 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center|center_horizontal" 
     android:layout_marginTop="8dp" > 

     <TextView 
      android:id="@+id/textView2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/search_for" /> 

     <Spinner 
      android:id="@+id/criterion" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="5dp" 
      android:layout_marginRight="5dp" 
      android:entries="@array/searcharray" 
      android:prompt="@string/prompt" /> 

     <Button 
      android:id="@+id/btnSubmit" 
      android:layout_width="136dp" 
      android:layout_height="match_parent" 
      android:layout_marginLeft="5dp" 
      android:layout_marginRight="5dp" 
      android:background="@drawable/android" 
      android:onClick="sendMessage" 
      android:text="@string/button_send" /> 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/sort_for" 
      android:textAppearance="?android:attr/textAppearanceMedium" /> 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:orientation="vertical" > 

      <Spinner 
       android:id="@+id/sort" 
       android:layout_width="wrap_content" 
       android:layout_height="0dip" 
       android:layout_weight="1" 
       android:entries="@array/sortarray" 
       android:prompt="@string/prompt" /> 

     </LinearLayout> 

     <Button 
      android:id="@+id/sort_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="5dp" 
      android:layout_marginRight="5dp" 
      android:background="@drawable/android" 
      android:onClick="sortAgain" 
      android:text="@string/button_send" /> 

    </LinearLayout> 

<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <TextView 
     android:id="@+id/showResults" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 
</ScrollView> 


</LinearLayout> 

我已經添加了當前設計的照片。周圍有紅框的空間是第三個「行」,應該改變。第二個微調是(我不知道爲什麼)太寬。它應該和第一個一樣廣泛。那麼所有的元素應該是相同的高度,元素應該居中。

Current state

+2

這將有助於張貼布局的圖像你會喜歡實現。 – kdroider 2013-02-13 08:48:49

+0

完成。感謝你的幫助。 – chrissik 2013-02-13 09:06:37

回答

1

你在正確的軌道上你的佈局上,但你的第二個Spinner是佔用了太多空間的原因是你已經設置它的layout_weight爲1,因爲它是唯一一個與一個layout_weight,它佔用了免費的剩餘空間。

如果您希望物品在屏幕上佔用相對數量的空間,那麼您可以堅持使用layout_weight併爲您的所有物品提供該物業。

例如,只爲你的第三排,你會擺脫LinearLayoutSpinner各處,更改一些layout_width性質的,給你所有的項layout_weight的。

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center|center_horizontal" 
    android:layout_marginTop="8dp" > 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="@string/search_for" /> 

    <Spinner 
     android:id="@+id/criterion" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:layout_marginLeft="5dp" 
     android:layout_marginRight="5dp" 
     android:entries="@array/searcharray" 
     android:prompt="@string/prompt" /> 

    <Button 
     android:id="@+id/btnSubmit" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:layout_marginLeft="5dp" 
     android:layout_marginRight="5dp" 
     android:background="@drawable/android" 
     android:onClick="sendMessage" 
     android:text="@string/button_send" /> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="@string/sort_for" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <Spinner 
     android:id="@+id/sort" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:entries="@array/sortarray" 
     android:prompt="@string/prompt" /> 

    <Button 
     android:id="@+id/sort_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:layout_marginLeft="5dp" 
     android:layout_marginRight="5dp" 
     android:background="@drawable/android" 
     android:onClick="sortAgain" 
     android:text="@string/button_send" /> 

</LinearLayout> 

這將會讓所有的物品相等的加權,所以TextViews將大小爲Spinners這將是大小爲Buttons一樣一樣的。玩的layout_weight屬性,使之更相關,例如,如果你想Buttons是尺寸爲Spinners兩次,設置其layout_weight爲2

+0

謝謝,這解決了我的問題。 – chrissik 2013-02-18 06:49:39