2013-08-07 114 views
1

首先讓我嘗試在這裏嘗試完成我想要完成的工作。用戶界面佈局問題

的EditText

的EditText搜索按鈕

的ListView(搜索結果。只能有一個,的ListView帶適配器和WRAP_CONTENT的高度似乎對這項工作,有一個按鈕將結果添加到下面的ListView中,一旦添加按鈕被點擊,這個ListView會崩潰,這正是我所追求的)

的TextView(標籤添加的對象)

的ListView(對象列表中所增加,再次我使用列表行佈局適配器)

SaveButton

我正想粘貼我擁有的代碼,但是有太多可以通過的代碼。我遇到的問題是與ListViews。基本上,包含添加對象的ListView最終會將屏幕上的SaveButton關閉。我已經嘗試了大量的解決方案,並在其他許多網站上安排,但他們似乎並沒有正確的工作。

基本上,我希望SaveButton始終位於底部,我不希望它在ListView變得太大時被推離屏幕。我發現「工作」的唯一解決方案是明確設置ListView的高度。但是,這會導致從平板電腦到手機的問題(Nexus7 & Galaxy S3)。我認爲使用dip尺寸可以防止這種情況發生,但顯然不會。

如果任何人有一個很好的策略來創建這種類型的佈局將是偉大的。或者甚至是學習如何使用Android笨重的UI系統的好資源(它真的有點不盡人意)。

編輯:這是我在使用的RelativeLayout

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@color/main_background" 
android:orientation="vertical" > 

<EditText 
    android:id="@+id/plan_name" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:ems="10" 
    android:hint="@string/plan_name_hint" 
    android:textColor="@color/text_color" > 

    <requestFocus /> 
</EditText> 

<EditText 
    android:id="@+id/object_search_text" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/plan_name" 
    android:ems="10" 
    android:hint="@string/search_objects_text" 
    android:textColor="@color/text_color" > 
</EditText> 

<Button 
    android:id="@+id/objects_search_button" 
    style="@style/button_text" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@id/object_search_text" 
    android:layout_below="@id/plan_name" 
    android:layout_alignParentRight="true" 
    android:background="@drawable/black_button" 
    android:text="@string/search_objects_button_label" /> 

<ListView 
    android:id="@+id/search_result" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/object_search_text" 
    android:background="@color/main_background" 
    android:textColor="@color/text_color" > 
</ListView> 

<TextView 
    android:id="@+id/objects_list_label" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/search_result" 
    android:paddingBottom="8dip" 
    android:paddingLeft="8dip" 
    android:text="@string/plan_objects_list_label" 
    android:textColor="@color/text_color" 
    android:textSize="22sp" 
    android:textStyle="bold" /> 

<ListView 
    android:id="@+id/plan_objects" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/objects_list_label" 
    android:background="@color/main_background" 
    android:textColor="@color/text_color" > 
</ListView> 

<Button 
    android:id="@+id/save_plan_button" 
    style="@style/button_text" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:background="@drawable/black_button" 
    android:paddingLeft="8dip" 
    android:text="@string/save_button_label" /> 

回答

0

它看起來像只有真正解決這裏是相應地使用顯式尺寸列表視圖和計劃不同的屏幕尺寸(即創建不同的屏幕不同的佈局和outlined here。)。我希望有一些更通用的東西。好吧。

2

如果你覺得Android的UI系統是笨拙的嘗試,你顯然還沒有嘗試去了解它。對於大多數事情來說它的設計非常好

如果您希望某個視圖(或多個視圖)始終位於底部,那麼您希望將屏幕設置爲RelativeLayout,並在這些元素上放置android:layout_alignParentBottom =「true」。然後添加android:layout_above =「id」在任何你想要在他們上面,其中id是你想要在底部的元素的id。

+1

如果您想要保留一個LinearLayout,另一種方法是將'layout_weight'設置爲您想展開/收縮以適應屏幕的任何ListView。 – Geobits

+0

當彈出鍵盤時,會使所有內容都縮小的Geobit。 – ryoung

+0

這使應用程序崩潰:CastException:android.widget.Button不能轉換爲android.widget.ListView – ryoung

0

使SaveButtonListView處於相同的層級。例如,如果你的父母佈局是RelativeLayoutSaveButton添加該屬性android:layout_alignParentBottom="true"