如何让TextView显示在ListView之上?

时间:2012-12-24 22:32:08

标签: android android-layout listview textview

我正在尝试从ListActivity中的ListView顶部显示TextView,但文本没有显示。

LayoutInflater inflater = (LayoutInflater)getSystemService( Context.LAYOUT_INFLATER_SERVICE );
View layout = inflater.inflate( R.layout.main, null );
TextView myTextView = (TextView)layout.findViewById( R.id.myTextView );
myTextView.setVisibility( View.VISIBLE );
myTextView.setText( R.string.emptyList );
setContentView( layout );

这是主要布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView android:id="@+id/myTextView"
        android:paddingLeft="10dp"
        android:paddingTop="10dp"
        android:textSize="16sp"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:visibility="gone"/>    
    <ListView  
        android:id="@android:id/list"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"/>
</LinearLayout>

如果列表视图为空,我希望在屏幕顶部显示“空列表”通知。

3 个答案:

答案 0 :(得分:3)

为什么不将setEmptyView用于ListView并以此方式进行通知。

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
    android:layout_width="fill_parent"
    android:layout_height="300dip"
    android:id="@+id/list_view" />
<TextView
    android:id="@+id/empty_list_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="List view is empty"
    android:visibility="gone" />
</LinearLayout>

并致电您的代码。

ListView listView = (ListView) findViewById( R.id.list_view );
listView.setEmptyView( findViewById( R.id.empty_list_view ) );
listView.setAdapter(yourAdapter);

检查这些以获取更多信息。

Correct use of setEmtpyView in AdapterView

http://www.technotalkative.com/android-listview-setemptyview/

答案 1 :(得分:1)

您可以使用FrameLayout代替LinearLayout,这样TextViewListView将共享相同的布局空间(尽管不严格必要)

然后,您可以将ListView 空视图设置为myTextView,它会自动为您显示或隐藏空视图。

答案 2 :(得分:0)

我不确定你对TextView的意思。当活动加载时,您是否尝试在列表上方放置某些内容?在这种情况下,将它添加到LinearLayout列表上方就可以了。

要获取您所指的“空列表”通知,请确保您使用的活动扩展ListActivity,而不仅仅是Activity,并且相应的视图标题为“list”和“empty”。

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

<ListView
    android:id="@+id/android:list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>

<TextView
    android:id="@+id/android:empty"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="@string/empty_user_list"/>

</LinearLayout>