3

我只想在 a 中显示 5 行,ListView其余的应该是scrollable。到目前为止,我已经尝试过了

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

    <EditText 
        android:id="@+id/txtFilename"
        android:layout_width="375dp"
        android:layout_height="wrap_content"
        android:layout_margin="10dp" />

    <ListView
        android:id="@+id/ListView01"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:scrollbarSize="2dp"
        android:

        /> 



     <LinearLayout 
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/gray"
        android:padding="5dp" >

        <Button 
            android:id="@+id/btnOk"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="OK"/>

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


</LinearLayout>

并且在java code

public class MainActivity extends Activity {

    private ListView list1;

    private String array[] = { "Iphone", "Tutorials", "Gallery", "Android",

    "item 1", "item 2", "item3", "item 4" };
    @SuppressWarnings("unchecked")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        //parentLayout.add(childLayout);

        setContentView(R.layout.activity_main);
        list1 = (ListView) findViewById(R.id.ListView01);

        // By using setAdpater method in listview we an add string array in

        // list.

        list1.setAdapter(new ArrayAdapter(this,android.R.layout.simple_list_item_1, array));

    }

知道如何实现它

4

2 回答 2

1

在这里我只是修改你的Layout只是检查它!

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

    <EditText 
        android:id="@+id/txtFilename"
        android:layout_width="375dp"
        android:layout_height="wrap_content"
        android:layout_margin="10dp" />
<LinearLayout
         android:layout_width="fill_parent"
         android:layout_height="300dip">
    <ListView
        android:id="@+id/ListView01"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:scrollbarSize="2dp"


        /> 


</LinearLayout>
     <LinearLayout 
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/gray"
        android:padding="5dp" >

        <Button 
            android:id="@+id/btnOk"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="OK"/>

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


</LinearLayout>
于 2013-05-27T11:13:19.060 回答
-1

我为此编写了 Demo:

如果您想将高度固定ListView为 5 个项目。那么你必须ListView 通过计算高度来务实地设置listItems高度。

首先,您需要为列表项创建布局并给它一些固定的高度,这里我添加了高度,Tag因为runtime我将布局高度设置为 0。

这是ListItem布局

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relativeLayout"
    android:layout_width="fill_parent"
    android:background="@android:color/black"
    android:tag="40"
    android:layout_height="40dp" >

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="XXX"
        android:textColor="@android:color/darker_gray"
        android:textSize="30sp" />

    <TextView
        android:id="@+id/text2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@+id/text"
        android:text="ZZZ"
        android:textColor="@android:color/darker_gray"
        android:textSize="30sp" />

</RelativeLayout>

并设置 ListView 的高度:

list    =   (ListView) findViewById(R.id.listView1);

    adapter = new Adapter(MainActivity.this, setter);
    list.setAdapter(adapter);        

    RelativeLayout.LayoutParams lstViewParams = (LayoutParams) list.getLayoutParams();        
    View lisItemInflatedView = View.inflate(this, R.layout.item, null);        
    RelativeLayout relLayoutInLstItem = (RelativeLayout) lisItemInflatedView.findViewById(R.id.relativeLayout);       
    final float scale = this.getResources().getDisplayMetrics().density;
    int pixels = (int) ( Integer.parseInt( relLayoutInLstItem.getTag().toString() ) * scale + 0.5f);    
    int listHeigt = pixels  * 5 + 5;       
    lstViewParams.height = listHeigt;

这是屏幕截图..

在此处输入图像描述

希望这会有所帮助。

于 2013-05-25T07:23:41.560 回答