我想在ListView
中仅显示5行,其余部分应为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));
}
知道如何实现它
答案 0 :(得分:0)
这里我只是修改你的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>
答案 1 :(得分:-1)
我为此写了Demo:
如果您想将ListView
的高度修改为5个项目。那么你必须通过计算ListView
高度来实际设置listItems
的高度。
首先你需要为List Item创建Layout并给它一些固定的高度,这里我在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;
这是截图..
希望这会有所帮助。