2015-10-14 97 views
0

我有這樣的XML片段:的ListView砍最後一個項目

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:local="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_above="@+id/footer"> 
    <My.Views.NoResultPanel 
     style="@style/default_no_result_panel" 
     android:id="@+id/noResultPanel" 
     local:textID="@string/no_chat" /> 
    <My.Views.LoadingPanel 
     style="@style/default_loading_panel" 
     android:id="@+id/loadingPanel" 
     local:textID="@string/loading_chat" /> 
    <ListView 
     android:id="@+id/lvChat" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:divider="@null" 
     android:dividerHeight="8dp" 
     android:stackFromBottom="true" 
     android:listSelector="@android:color/transparent" /> 
    <View 
     style="@style/default_divider" 
     android:layout_gravity="bottom" /> 
</FrameLayout> 
    <RelativeLayout 
     android:id="@+id/footer" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:padding="8dp"> 
     <ImageView 
      android:id="@+id/imgAttachment" 
      android:layout_width="40dp" 
      android:layout_height="40dp" 
      android:padding="8dp" 
      android:layout_centerVertical="true" 
      android:src="@drawable/ic_attachment_grey600_24dp" 
      android:layout_alignParentLeft="true" /> 
     <EditText 
      android:id="@+id/txtMessage" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_toLeftOf="@+id/imgVisibility" 
      android:layout_toRightOf="@+id/imgAttachment" 
      android:layout_centerVertical="true" 
      android:layout_marginRight="4dp" 
      android:layout_marginLeft="4dp" 
      android:maxLines="3" 
      android:inputType="textShortMessage" 
      android:hint="@string/write_a_message_here" /> 
     <ImageView 
      android:id="@+id/imgVisibility" 
      android:layout_width="40dp" 
      android:layout_height="40dp" 
      android:padding="8dp" 
      android:layout_centerVertical="true" 
      android:layout_marginRight="4dp" 
      android:src="@drawable/ic_eye_grey600_24dp" 
      android:layout_toLeftOf="@+id/imgSend" /> 
     <ImageView 
      android:id="@+id/imgSend" 
      android:layout_width="40dp" 
      android:layout_height="40dp" 
      android:padding="8dp" 
      android:layout_centerVertical="true" 
      android:src="@drawable/ic_send_grey600_24dp" 
      android:layout_alignParentRight="true" /> 
    </RelativeLayout> 
</RelativeLayout> 

我需要模擬一個聊天室,所以我採用了android:stackFromBottom

的問題是,當我打開該片斷第一次,我發現最後一個項目「切割」。 這是片段的截圖。

enter image description here

我做錯了什麼?

更新代碼

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:local="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
<RelativeLayout 
    android:id="@+id/footer" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:padding="8dp"> 
    <ImageView 
     android:id="@+id/imgAttachment" 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:padding="8dp" 
     android:layout_centerVertical="true" 
     android:src="@drawable/ic_attachment_grey600_24dp" 
     android:layout_alignParentLeft="true" 
     android:background="@drawable/Default_clicked_view_rounded" /> 
    <EditText 
     android:id="@+id/txtMessage" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_toLeftOf="@+id/imgVisibility" 
     android:layout_toRightOf="@+id/imgAttachment" 
     android:layout_centerVertical="true" 
     android:layout_marginRight="4dp" 
     android:layout_marginLeft="4dp" 
     android:maxLines="3" 
     android:inputType="textShortMessage" 
     android:hint="@string/write_a_message_here" /> 
    <ImageView 
     android:id="@+id/imgVisibility" 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:padding="8dp" 
     android:layout_centerVertical="true" 
     android:layout_marginRight="4dp" 
     android:src="@drawable/ic_eye_grey600_24dp" 
     android:layout_toLeftOf="@+id/imgSend" 
     android:background="@drawable/Default_clicked_view_rounded" /> 
    <ImageView 
     android:id="@+id/imgSend" 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:padding="8dp" 
     android:layout_centerVertical="true" 
     android:src="@drawable/ic_send_grey600_24dp" 
     android:layout_alignParentRight="true" 
     android:background="@drawable/Default_clicked_view_rounded" /> 
</RelativeLayout> 

<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_above="@id/footer"> 
    <My.Views.NoResultPanel 
     style="@style/default_no_result_panel" 
     android:id="@+id/noResultPanel" 
     local:textID="@string/no_chat" /> 
    <My.Views.LoadingPanel 
     style="@style/default_loading_panel" 
     android:id="@+id/loadingPanel" 
     local:textID="@string/loading_chat" /> 
    <ListView 
     android:id="@+id/lvChat" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:divider="@null" 
     android:dividerHeight="8dp" 
     android:stackFromBottom="true" 
     android:listSelector="@android:color/transparent" /> 
    <View 
     style="@style/default_divider" 
     android:layout_gravity="bottom" /> 
</FrameLayout> 
</RelativeLayout> 
+0

嘗試刪除'機器人:stackFromBottom = 「真」' – Jas

回答

2
<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 

你的FrameLayout是匹配父所以它覆蓋了整個屏幕第一等是不知道新的佈局下方@ + ID /頁腳...上它的頂部你有覆蓋底部RelativeLayout這是頁腳,所以只需要改變你的佈局。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:local="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
    //your Footer Layout will always stay in bottom 
<RelativeLayout 
     android:id="@+id/footer" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:padding="8dp"> 
     <ImageView 
      android:id="@+id/imgAttachment" 
      android:layout_width="40dp" 
      android:layout_height="40dp" 
      android:padding="8dp" 
      android:layout_centerVertical="true" 
      android:src="@drawable/ic_attachment_grey600_24dp" 
      android:layout_alignParentLeft="true" /> 
     <EditText 
      android:id="@+id/txtMessage" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_toLeftOf="@+id/imgVisibility" 
      android:layout_toRightOf="@+id/imgAttachment" 
      android:layout_centerVertical="true" 
      android:layout_marginRight="4dp" 
      android:layout_marginLeft="4dp" 
      android:maxLines="3" 
      android:inputType="textShortMessage" 
      android:hint="@string/write_a_message_here" /> 
     <ImageView 
      android:id="@+id/imgVisibility" 
      android:layout_width="40dp" 
      android:layout_height="40dp" 
      android:padding="8dp" 
      android:layout_centerVertical="true" 
      android:layout_marginRight="4dp" 
      android:src="@drawable/ic_eye_grey600_24dp" 
      android:layout_toLeftOf="@+id/imgSend" /> 
     <ImageView 
      android:id="@+id/imgSend" 
      android:layout_width="40dp" 
      android:layout_height="40dp" 
      android:padding="8dp" 
      android:layout_centerVertical="true" 
      android:src="@drawable/ic_send_grey600_24dp" 
      android:layout_alignParentRight="true" /> 
    </RelativeLayout> 


//your FrameLayout now will adjust above footer 
<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_above="@id/footer">  --------change from +id to id now 
    <My.Views.NoResultPanel 
     style="@style/default_no_result_panel" 
     android:id="@+id/noResultPanel" 
     local:textID="@string/no_chat" /> 
    <My.Views.LoadingPanel 
     style="@style/default_loading_panel" 
     android:id="@+id/loadingPanel" 
     local:textID="@string/loading_chat" /> 
    <ListView 
     android:id="@+id/lvChat" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:divider="@null" 
     android:dividerHeight="8dp" 
     android:stackFromBottom="true" 
     android:listSelector="@android:color/transparent" /> 
    <View 
     style="@style/default_divider" 
     android:layout_gravity="bottom" /> 
</FrameLayout> 

</RelativeLayout> 

更新: 請嘗試添加android:transcriptMode="alwaysScroll"屬性的ListView

設置列表談話模式。在記錄模式下,列表滾動到底部,以便在添加新項目時可見。通過這種方式,列表將自動滾動到底部。

必須是您引用的以下常數值之一doc

Reference

+0

不幸的是這沒有解決問題。我更新了開放的帖子這個更新的代碼 – user3471528

+0

你有沒有嘗試以上的解決方案,並給予Framlayout底部邊緣 –

+0

嘗試與android:layout_marginBottom =「56dp」但問題仍然 – user3471528

1

與垂直方向的LinearLayout中更換你的父母的RelativeLayout

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

    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:weight="1" 
     android:layout_above="@+id/footer"> 
     .... 
    </FrameLayout> 

    <RelativeLayout 
     android:id="@+id/footer" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:padding="8dp"> 
     .... 
    </RelativeLayout> 

</LinearLayout> 

的的FrameLayout將匹配父高度