Rah*_*aki 1 user-interface android listview
我在一个Activity中有3个列表堆叠在一起,我想为每个列表设置空视图.我已经尝试将空视图设置为动态创建的视图和布局中定义的视图,但是当列表为空时,无论是否设置了最小高度,它都会将其折叠为0高度.每个列表为60px.
这是空视图的xml定义
<TextView android:id="@+id/empty_view"
android:layout_width="fill_parent"
android:layout_height="60px"
android:text="@string/empty_text"
/>
mListView.setEmptyView(findViewById(R.id.empty_view));
Run Code Online (Sandbox Code Playgroud)
这就是我以编程方式创建文本视图的方式.
mEmptyView = new TextView(this);
mEmptyView.setLayoutParams(new ListView.LayoutParams(60, 60));
mEmptyView.setText(R.string.empty_text);
mListView.setEmptyView(mEmptyView);
Run Code Online (Sandbox Code Playgroud)
Rah*_*aki 10
我的不好,这对我来说非常愚蠢:PI是一个相当荒谬的印象,如果我在xml布局中随机放置一个TextView然后将其设置为列表的空视图,它会神奇地消失,然后重新出现在列表为空时的列表.我想我认为当它的适配器为空时,列表会将其添加为列表中的一行.即使其他人决定尝试类似的荒谬事情并想知道发生了什么,我也不太可能发布我的原始布局的完整版本以及解决方案.
我用来设置空视图的代码是标准:
mListView.setEmptyView(findViewById(R.id.empty));
Run Code Online (Sandbox Code Playgroud)
但是我的原始布局看起来像这样:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="200sp"
>
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:text="@string/drafts"
/>
<ListView android:id="@+id/drafts"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="60sp"
/>
<TextView android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:background="#FFFFFF"
android:text="@string/finished"
/>
<ListView android:id="@+id/finished"
android:layout_width="fill_parent"
android:layout_height="60px"
android:minHeight="60px"
/>
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:text="@string/uploaded"
/>
<ListView android:id="@+id/uploaded"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="60sp"
/>
<TextView
android:id="@+id/empty"
android:text="DUDE WHERE'S MY CAR?"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
虽然我的列表视图的minHeight为60sp,但当列表为空时,高度似乎变为0.同样,我注意到TextView在我的所有三个列表中都可见,因此它似乎没有"消失"并再次出现在我的列表中的一行.多么令人失望!在我的严重疏忽中,为了测试,我将视图设置为仅我的第二个列表的emptyView,确保我的第一个和第二个列表为空,并填充第三个列表.我的第一个列表有它的最小高度,我的第二个列表缩小到0,我的第三个列表被正确填充,我的空视图出现在它下面.我没有尝试填充第二个列表,因此从未意识到空视图随后会消失.
最后花了一个多小时玩动态生成的空视图和诸如此类的东西后,我离开了一天,今晚回来并测试填充第二个列表.瞧,空洞的景色消失了,灯泡还在继续.我很快测试了移动第二个列表下方和第三个列表上方的空视图,当然,它完美地运行了!
这是新的工作布局:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="200sp"
>
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:text="@string/drafts"
/>
<ListView android:id="@+id/drafts"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:background="#FFFFFF"
android:text="@string/finished"
/>
<ListView android:id="@+id/finished"
android:layout_width="fill_parent"
android:layout_height="60px"
android:minHeight="60px"
/>
<TextView
android:id="@+id/empty"
android:text="DUDE WHERE'S MY CAR?"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
/>
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:text="@string/uploaded"
/>
<ListView android:id="@+id/uploaded"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
答案很长,可能只是跟自己说话,但无论如何 - 问这个问题,想出来了,我似乎永远无法在这里回答别人的问题所以我不妨回答我自己:)
归档时间: |
|
查看次数: |
4541 次 |
最近记录: |