使用ListView自定义标题栏

时间:2011-03-08 14:24:40

标签: android

我有一个Activity Extend ListActivity 我想在列表顶部添加LinearLayout或RelativeLayout 喜欢动作片头 但是当我添加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">
<RelativeLayout
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
    <TextView android:text="1111" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/textView1"/>  
</RelativeLayout>
    <ListView android:id="@id/android:list" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:layout_weight="1" 
        android:drawSelectorOnTop="false" android:padding="4dip" />
    <TextView android:id="@id/android:empty" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:text="No_data" />
</LinearLayout>

4 个答案:

答案 0 :(得分:1)

列表上方的RelativeLayout的高度为fill_parent,并且不会为其下方的列表留下任何空间。尝试在RelativeLayout上为layout_height设置一个不同的值,可以是dips中的常量高度,也可以是wrap_content。

您还希望在根LinearLayout上使用orientation =“vertical”。

答案 1 :(得分:0)

杰森,

Google在此提供了一个很好的例子,您可以称之为“行动标题”:http://code.google.com/p/iosched/

提供完整的源代码。

祝你好运。

答案 2 :(得分:0)

您已扩展ListActivity。您只需要扩展一个普通的Activity并使用ListView而不是ListActivity。

请参阅链接here

以下是您需要的文字

  

ListActivity具有默认布局   由单个全屏列表组成   在屏幕的中央。然而,   如果你愿意,你可以自定义   通过设置自己的视图来布局屏幕   使用setContentView()的布局   的onCreate()。要做到这一点,你自己的观点   必须包含一个ListView对象   id“@android:id / list”(或列出if   它在代码中)

答案 3 :(得分:0)

我遇到了同样的问题,没有出现任何问题。对我来说问题是Android没有正确地重新充气资源。在这里添加第二行为我修复了它:

final boolean useCustomTitle=requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
getWindow().getDecorView();//required to make title show up
if(useCustomTitle)
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.my_custom_title);

第二行返回一个视图,但我不需要它。但是,没有它,代码将无法运行。如果您需要找到解决方法,可以在线查找Android源代码。 private TextView mTitleView仍未更新,因此您可以覆盖setTitle或使用反射。