2010-02-26 38 views
7

Vì vậy, tôi đã cố gắng để thêm một nút bên dưới một listview trong android, vấn đề là nút không xuất hiện.Thêm một nút bên dưới một listview trên android

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

    <ListView 
     android:id="@+id/messagelist" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_x="0px" 
     android:layout_y="0px"> 
    </ListView> 
    <Button 
     android:id="@+id/addbutton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Button" 
     android:layout_x="0px" 
     android:layout_y="379px"> 
    </Button> 
</AbsoluteLayout> 
+2

Chúng ta không nên sử dụng AbsoluteLayout nữa. Sử dụng LinearLayout hoặc RelativeLayout thay thế. – anticafe

+0

Tôi sử dụng LinearLayout, Listview với layout_height = "0" và weight = "1". – David

Trả lời

6

AbsoluteLayout không được dùng nữa. Thay vào đó, tôi khuyên bạn nên sử dụng LinearLayout:

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

    <ListView 
     android:id="@+id/messagelist" 
     android:layout_width="wrap_content" 
     android:layout_height="0dp" 
     android:layout_weight="1"> 
    </ListView> 
    <Button 
     android:id="@+id/addbutton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Button"> 
    </Button> 
</LinearLayout> 

Tôi cũng khuyên bạn nên đọc qua developer docs trên bố cục để có phần giới thiệu tốt.

+7

Không sử dụng wrap_content cho chiều cao ListView, sử dụng 0dip. Wrap_content rất tốn kém và nó sẽ không thay đổi kết quả. –

+0

Woops, tôi đã đảo ngược layout_width và layout_height trong ví dụ của mình. Sửa lỗi. –

+0

Tôi đã thử rất nhiều thứ và tìm ra giải pháp của bạn. Thực sự cảm ơn bạn vì điều đó – Tima

1

Có ví dụ về bố cục như vậy trong mẫu "Bản trình diễn API". Các liên kết trang sau đây để các mẫu:

http://developer.android.com/resources/samples/index.html

Hãy tìm các tập tin LinearLayout9.java, và tương ứng file layout linear_layout9.xml của nó. Để thuận tiện, tôi đã dán chúng ở đây:

LinearLayout9.java:

/* 
* Copyright (C) 2007 The Android Open Source Project 
* 
* Licensed under the Apache License, Version 2.0 (the "License"); 
* you may not use this file except in compliance with the License. 
* You may obtain a copy of the License at 
* 
*  http://www.apache.org/licenses/LICENSE-2.0 
* 
* Unless required by applicable law or agreed to in writing, software 
* distributed under the License is distributed on an "AS IS" BASIS, 
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
* See the License for the specific language governing permissions and 
* limitations under the License. 
*/ 

package com.example.android.apis.view; 

import com.example.android.apis.R; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.ListView; 
import android.widget.ArrayAdapter; 

/** 
* Demonstrates how the layout_weight attribute can shrink an element too big 
* to fit on screen. 
*/ 
public class LinearLayout9 extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.linear_layout_9); 
     ListView list = (ListView) findViewById(R.id.list); 
     list.setAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, AutoComplete1.COUNTRIES)); 
    } 

} 

linear_layout9.xml:

<?xml version="1.0" encoding="utf-8"?> 
<!-- Copyright (C) 2007 The Android Open Source Project 

    Licensed under the Apache License, Version 2.0 (the "License"); 
    you may not use this file except in compliance with the License. 
    You may obtain a copy of the License at 

      http://www.apache.org/licenses/LICENSE-2.0 

    Unless required by applicable law or agreed to in writing, software 
    distributed under the License is distributed on an "AS IS" BASIS, 
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
    See the License for the specific language governing permissions and 
    limitations under the License. 
--> 

<!-- 
    Demonstrates a simple linear layout. The layout fills the screen, with the 
    children stacked from the top. 
    --> 

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

    <ListView android:id="@+id/list" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1.0" /> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/linear_layout_9_button" /> 

</LinearLayout> 
Các vấn đề liên quan