2010-12-21 79 views
0

我有一個如下所示的佈局。 我的問題是,在小屏幕上,視圖底部的按鈕被推出了用戶的視圖。我認爲我可以通過將整個佈局封裝在ScrollView中來輕鬆解決這個問題,但是我知道這不是一個可行的解決方案,因爲在我的佈局中有一個ListView。需要關於如何改善小屏幕布局的輸入

那麼,關於如何改變這種佈局的任何建議?我的主要問題是我有一個適配器連接到ListView,我不確定是否可以重做佈局並使用適配器。想到任何人?

問候 丹尼爾

順便說一句,我的here's佈局:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    style="@style/defaultBackground" 
    > 
    <LinearLayout 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:orientation="horizontal" 
     android:paddingBottom="10dip" 
     > 
     <TextView 
      android:id="@+id/roundInfo" 
      android:layout_width="wrap_content" 
      android:layout_height="20dip" android:textColor="#000" 
      /> 
     <TextView 
      android:id="@+id/balance" 
      android:layout_width="fill_parent" 
      android:layout_height="20dip" 
      android:gravity="right" 
      android:textColor="#000" 
      /> 
    </LinearLayout> 

    <ListView 
     android:id="@android:id/list" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:textSize="10sp" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:listSelector="@drawable/custom_row" 
     android:background="@drawable/custom_listview" 
     android:dividerHeight="0dip" 
     android:cacheColorHint="#FFFFFF" 
     android:fadingEdge="none" 
     android:divider="#FFFFFF" 
     /> 
    <TextView 
     android:id="@+id/gameCost" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/gameCost_not_finished" 
     android:textColor="#000" \ 
     android:paddingTop="10dip" 
     /> 
    <Button 
     android:id="@+id/update_button" 
     android:text="@string/placebet_button" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     style="@style/whiteText" 
     android:background="@drawable/custom_button" 
     /> 
</LinearLayout> 

回答

0

對於這種情況,你應該使用的RelativeLayout代替的LinearLayout的。嘗試是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    style="@style/defaultBackground" 
    > 
    <LinearLayout 
     android:id="@+id/header" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:layout_alignParentTop="true" 
     android:orientation="horizontal" 
     android:paddingBottom="10dip" 
     > 
     <TextView 
      android:id="@+id/roundInfo" 
      android:layout_width="wrap_content" 
      android:layout_height="20dip" android:textColor="#000" 
      /> 
     <TextView 
      android:id="@+id/balance" 
      android:layout_width="fill_parent" 
      android:layout_height="20dip" 
      android:gravity="right" 
      android:textColor="#000" 
      /> 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/footer" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:orientation="vertical" 
     > 
     <TextView 
      android:id="@+id/gameCost" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/gameCost_not_finished" 
      android:textColor="#000" 
      android:paddingTop="10dip" 
      /> 
     <Button 
      android:id="@+id/update_button" 
      android:text="@string/placebet_button" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      style="@style/whiteText" 
      android:background="@drawable/custom_button" 
      /> 
    </LinearLayout> 

    <ListView 
     android:id="@android:id/list" 
     android:layout_width="fill_parent" 
     android:textSize="10sp" 
     android:layout_height="fill_parent" 
     android:layout_above="@id/footer" 
     android:layout_below="@id/header" 
     android:listSelector="@drawable/custom_row" 
     android:background="@drawable/custom_listview" 
     android:dividerHeight="0dip" 
     android:cacheColorHint="#FFFFFF" 
     android:fadingEdge="none" 
     android:divider="#FFFFFF" 
     /> 
</RelativeLayout> 

基本上,改變你的根佈局爲RelativeLayout的,和你的內容分成三個部分:頭,身,尾。在水平LinearLayout中保持標題原樣,並將其設置爲alignParentTop。由於它只設置爲wrap_content,所以我們不必擔心重量或任何事情。然後,將應該放在底部的其他固定項目(gameCost文本和placeBet按鈕)放置到用作頁腳的垂直LinearLayout中。將其設置爲alignParentBottom。最後,用fill_parent的高度聲明你的ListView。這將佔用剩餘空間,但爲了將其保留在頁眉和頁腳的範圍內,我們添加layout_above和layout_below參數。希望這可以幫助!

+0

非常感謝你的回答!我想知道如果我的用戶在使用RelativeLayout解決方案時認爲ListView太小,我是否可以做任何事情? – Daniel 2010-12-21 20:56:22