基本上我在点击“+”按钮时会尝试重新创建默认联系人屏幕。另一行电话号码已添加到列表中。
现在我有一个ImageView作为“+”按钮和一个ListView来包含电话号码列表。问题是当我在列表中添加更多项目时,ListView不会展开。
我可以使用LinearLayout构建相同的外观但是如何以这种方式保存所有这些数字?
以下是将使用自定义适配器
进行充气的项目布局<?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="60px"
android:stretchColumns="1"
android:background="#FFFFFFFF"
android:gravity="center_vertical">
<TableRow>
<Button
android:id="@+id/type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:text="Home" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:paddingRight="10dp"
>
<EditText
android:id="@+id/value"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:text=""
android:hint="Name"
android:lines="1"
android:textSize="10pt"
android:typeface="sans"
android:textColor="#FF000000"
android:gravity="left"
/>
</RelativeLayout>
<ImageView
android:id="@+id/del"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:paddingRight="14dp"
android:src="@android:drawable/ic_delete" />
</TableRow>
</TableLayout>
这是ListView部分。
<ListView
android:id="@+id/phoneList"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#FFFFFFFF"
android:scrollbars="none" />
这真令人困惑:S。有人可以帮我吗?
答案 0 :(得分:1)
您应该使用ViewStub。
ViewStub是一个不可见的,零大小的 可以懒惰地使用的视图 在运行时膨胀布局资源。 当ViewStub可见时,或 当调用inflate()时,布局 资源膨胀。
Here您有一些教程,或者您可以克隆android's git repo来检查他们是如何做到的。
答案 1 :(得分:1)
我已经构建了一个动画类,它将边距设置为负值,使项目消失。
动画如下所示:
public class ExpandAnimation extends Animation {
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
super.applyTransformation(interpolatedTime, t);
if (interpolatedTime < 1.0f) {
// Calculating the new bottom margin, and setting it
mViewLayoutParams.bottomMargin = mMarginStart
+ (int) ((mMarginEnd - mMarginStart) * interpolatedTime);
// Invalidating the layout, making us seeing the changes we made
mAnimatedView.requestLayout();
}
}
}
我在博客文章中有一个完整的动画示例应用: http://udinic.wordpress.com/2011/09/03/expanding-listview-items/
答案 2 :(得分:0)
我最终创建了自己的类,扩展了LinearLayout,每次添加或删除项目时都会重新计算其大小。我确信代码很脏并且占用了很多记忆,但它现在都有用。