我在ListViewActivity上显示listView。我想在LisView的顶部添加一个按钮。我试过这个:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//....
setContentView(R.layout.listview_singlegrey);
LinearLayout linear = (LinearLayout) findViewById(R.id.list_comment);
Button btAddComment = new Button(this);
btAddComment.setText("Añadir comentario");
linear.addView(btAddComment);
setContentView(linear);
//....
}
文件listview_singlegrey.xml如下:
<?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="fill_parent" android:id="@+id/list_comment"
android:paddingLeft="10dp" android:paddingRight="10dp" android:background="@drawable/fondomain">
<ListView android:id="@+id/android:list" android:listSelector="@android:color/transparent"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:divider="@layout/linedivider" android:dividerHeight="10px"
android:cacheColorHint="#0000" android:paddingTop="10dp"
/>
</LinearLayout>
但我看不到按钮。有什么想法吗?
答案 0 :(得分:1)
摆脱
setContentView(linear);
另外,请先尝试在XML中添加按钮并确保它显示出来。您可能需要摆弄layout_height
和layout_weight
参数,以便ListView不会将其推到屏幕外。一旦知道了正确的参数,就在运行时设置它们。
答案 1 :(得分:1)
如果要在列表视图的顶部添加按钮,则必须将其添加到第零个索引
linear.addView(btAddComment, 0);
现在,您的列表视图位于索引1中。
答案 2 :(得分:1)
查看此方法addHeaderView,它会在列表顶部添加一个固定视图。
答案 3 :(得分:0)
我猜你在代码中创建按钮时会错过LayoutParams。 使用Button.setLayoutParams(new LayoutParams(...))。
但我不推荐这种方式。为什么不在列表视图上方添加按钮 在XML中?然后它在那里保持固定。像这样:
<LinearLayout> <Button/> <ListView /> </LinearLayout>
如果你想要一个用滚动列表视图的“可滚动按钮”, 使用按钮编写XML文件,通过getLayoutInflater.inflate(R.layout ...)对其进行充气并使用ListView.addHeaderView()。
答案 4 :(得分:0)
您需要使用ListView
的{{3}}。
根据文档
添加固定视图以显示在顶部 的清单。如果addHeaderView是 意见不止一次 按照添加顺序显示。 使用此调用添加的视图可以采用 如果他们想要的话。注意:调用此方法 在调用setAdapter之前。就是这样 ListView可以包装提供的游标 还有一个也会占 页眉和页脚视图。
答案 5 :(得分:0)
你想要listview的标题吗?你可以像这样使用标题
listView.addHeaderView(view);
此处视图可以是任何视图组件。
答案 6 :(得分:0)
在将按钮添加到布局之前,您应该尝试设置布局参数。
这样的事情:
btAddComment.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
这应该可以解决问题。如果没有,请告诉我。