2011-04-15 53 views
2

我终于设法让我的列表正确显示(http://stackoverflow.com/questions/5662277/how-to-line-up-intger-output-in-custom-android-dialog)。按钮下面的列表不显示

现在我试图在列表下面添加一个按钮。会发生什么情况是,当列表太大时,按钮不会显示。 该列表是可滚动的,但就是这样。 另外,滚动条覆盖了一些数据。

这是主要的XML文件:

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

    <LinearLayout android:id="@+id/lloPlayerNames" xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" android:layout_height="wrap_content" 
       android:orientation="horizontal"> 
     <TextView  android:id="@+id/tvwPlayer1Name" android:layout_weight="1" android:gravity="right" 
        android:layout_width="fill_parent" android:layout_height="wrap_content"/> 
     <TextView  android:id="@+id/tvwPlayer2Name" android:layout_weight="1" android:gravity="right" 
        android:layout_width="fill_parent" android:layout_height="wrap_content"/> 
     <TextView  android:id="@+id/tvwPlayer3Name" android:layout_weight="1" android:gravity="right" 
        android:layout_width="fill_parent" android:layout_height="wrap_content"/> 
     <TextView  android:id="@+id/tvwPlayer4Name" android:layout_weight="1" android:gravity="right" 
        android:layout_width="fill_parent" android:layout_height="wrap_content" 
        android:layout_margin="2dp"/> 
    </LinearLayout> 
    <ListView android:id="@+id/lvwScores" android:layout_below="@id/lloPlayerNames" 
     android:layout_width="fill_parent" android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" /> 

    <Button android:id="@+id/btnOK " 
    android:layout_height="wrap_content" android:layout_width="wrap_content" 
     android:layout_below="@id/lvwScores" android:layout_weight="1" 
    android:text="OK" android:layout_centerHorizontal="true" /> 
</RelativeLayout> 

这是一个用于行:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> 
    <TextView android:id="@+id/tvwPlayer1Score" android:layout_weight="1" android:gravity="right" 
    android:layout_width="fill_parent" android:layout_height="wrap_content"/> 
    <TextView android:id="@+id/tvwPlayer2Score" android:layout_weight="1" android:gravity="right" 
    android:layout_width="fill_parent" android:layout_height="wrap_content"/> 
    <TextView android:id="@+id/tvwPlayer3Score" android:layout_weight="1" android:gravity="right" 
    android:layout_width="fill_parent" android:layout_height="wrap_content"/> 
    <TextView android:id="@+id/tvwPlayer4Score" android:layout_weight="1" android:gravity="right" 
    android:layout_width="fill_parent" android:layout_height="wrap_content"/> 
</LinearLayout> 

我试图改变主要为线性布局,但使得它更糟糕!这份名单看起来像是一次暴饮暴食,超薄。


尝试:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <LinearLayout android:id="@+id/lloPlayerNames" xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" android:layout_height="wrap_content" 
       android:orientation="horizontal"> 
     <TextView  android:id="@+id/tvwPlayer1Name" android:layout_weight="1" android:gravity="right" 
        android:layout_width="fill_parent" android:layout_height="wrap_content"/> 
     <TextView  android:id="@+id/tvwPlayer2Name" android:layout_weight="1" android:gravity="right" 
        android:layout_width="fill_parent" android:layout_height="wrap_content"/> 
     <TextView  android:id="@+id/tvwPlayer3Name" android:layout_weight="1" android:gravity="right" 
        android:layout_width="fill_parent" android:layout_height="wrap_content"/> 
     <TextView  android:id="@+id/tvwPlayer4Name" android:layout_weight="1" android:gravity="right" 
        android:layout_width="fill_parent" android:layout_height="wrap_content" 
        android:layout_marginRight="2dp"/> 
    </LinearLayout> 
    <Button android:id="@+id/btnOK" 
    android:layout_height="wrap_content" android:layout_width="wrap_content" 
    android:text="OK" android:layout_centerHorizontal="true" 
    layout_alignParentBottom="true"/> 
    <ListView android:id="@+id/lvwScores" android:layout_above="@id/btnOK" android:layout_below="@id/lloPlayerNames" 
     android:layout_width="fill_parent" android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" android:layout_weight="1"/> 

</RelativeLayout> 

什么,我得到的是: enter image description here

当我尝试:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" 
       android:orientation="vertical">> 

    <LinearLayout android:id="@+id/lloPlayerNames" xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" android:layout_height="wrap_content" 
       android:orientation="horizontal"> 
     <TextView  android:id="@+id/tvwPlayer1Name" android:layout_weight="1" android:gravity="right" 
        android:layout_width="fill_parent" android:layout_height="wrap_content"/> 
     <TextView  android:id="@+id/tvwPlayer2Name" android:layout_weight="1" android:gravity="right" 
        android:layout_width="fill_parent" android:layout_height="wrap_content"/> 
     <TextView  android:id="@+id/tvwPlayer3Name" android:layout_weight="1" android:gravity="right" 
        android:layout_width="fill_parent" android:layout_height="wrap_content"/> 
     <TextView  android:id="@+id/tvwPlayer4Name" android:layout_weight="1" android:gravity="right" 
        android:layout_width="fill_parent" android:layout_height="wrap_content" 
        android:layout_marginRight="2dp"/> 
    </LinearLayout> 
    <ListView android:id="@+id/lvwScores" 
     android:layout_width="fill_parent" android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" android:layout_weight="1"/> 
    <Button android:id="@+id/btnOK" 
    android:layout_height="wrap_content" android:layout_width="wrap_content" 
    android:text="OK" android:layout_centerHorizontal="true" 
    layout_alignParentBottom="true"/> 

</LinearLayout> 

我得到:

enter image description here

回答

4

您应该将按钮放在列表之前,然后使用list元素的layout_above属性将其放在按钮上方。同时将layout_alignParentBottom="true"添加到您的按钮。

像这样:

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

<LinearLayout 
    android:id="@+id/lloPlayerNames" xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:orientation="horizontal"> 
    <TextView 
    android:id="@+id/tvwPlayer1Name" android:layout_weight="1" android:gravity="right" 
    android:layout_width="fill_parent" android:layout_height="wrap_content"/> 
    <TextView 
    android:id="@+id/tvwPlayer2Name" android:layout_weight="1" android:gravity="right" 
    android:layout_width="fill_parent" android:layout_height="wrap_content"/> 
    <TextView  
    android:id="@+id/tvwPlayer3Name" android:layout_weight="1" android:gravity="right" 
    android:layout_width="fill_parent" android:layout_height="wrap_content"/> 
    <TextView  
    android:id="@+id/tvwPlayer4Name" android:layout_weight="1" android:gravity="right" 
    android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:layout_margin="2dp"/> 
</LinearLayout> 

<Button android:id="@+id/btnOK" 
    android:layout_height="wrap_content" android:layout_width="wrap_content" 
    android:layout_below="@id/lvwScores" android:layout_weight="1" 
    android:text="OK" android:layout_centerHorizontal="true" 

    android:layout_alignParentBottom="true" 

    /> 

<ListView 
    android:id="@+id/lvwScores" 
    android:layout_below="@id/lloPlayerNames" 

    android:layout_above="@id/btnOK" 

    android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" /> 

+0

现在列表完全消失。我得到的只是标题和按钮。明天再见,因为这是很快的安息日,我必须去准备。 :) – theblitz 2011-04-15 15:04:31

+0

只是试过这个,现在它的工作。堰。将它传送到我的手机并看到。 – theblitz 2011-04-16 21:20:51

1

尝试在主xml中将android:below="@id/lvwScores"添加到Button,这会将Button置于ListView以下。

有关RelativeLayout的更多信息,请参见this tutorial

9

下面是我的一对夫妇我的应用程序有一个ListView或滚动型的,我也是在底部有按钮的固定按钮或LinearLayout中做。 “魔术”是在ListView中设置android:layout_weight="1"

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
    <ListView 
     android:id="@+id/android:list" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:fastScrollEnabled="true" /> 
    <TextView 
     android:id="@+id/android:empty" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="No Quotes!" /> 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="My Button" /> 
</LinearLayout>