我从互联网上获取数据,我需要在布局中打印所有数据。
问题是在他们显示之前我不知道,他们的文字长度。
我想过做这样的布局:
其中标题和国家/地区块不应该是可点击和/或可展开的,但 Actors块应该是@authors文本太长的地方。
事实上,它应该与Google Actuality显示非常相似:
The layout I need is similar to Google Actuality
我看过许多布局,例如ExpandableViewList或RecyclerView(也是TableLayout和ListView),但我无法找到符合我要求的布局
答案 0 :(得分:0)
您可以执行包含LinearLayout的项目的RecyclerView(它可以更快地膨胀,但您可以使用其他项目),您可以在其中存储3个CardView,每个CardView包含一个TextView。第一个和第二个CardViews应包含Title和Country的TextViews,但第三个CardView也应该有OnClick事件,因此如果TextView文本大小大于此值,您将能够更改CardView的高度(又称扩展和缩小)。恒定的阈值。
答案 1 :(得分:0)
您可以使用展开ExpandableListView
的自定义适配器在BaseExpandableListAdapter
中显示它。
您的自定义适配器看起来应该是这样的。
class Adapter extends BaseExpandableListAdapter {
static class Elem {
String title;
String desc;
boolean canExpand;
}
private List<Elem> mData;
public void setData(List<Elem> data) {
mData = data;
}
@Override
public int getGroupCount() {
return mData.size();
}
@Override
public Object getGroup(int groupPosition) { return mData.get(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
Elem e = (Elem)getGroup(groupPosition);
return e.desc;
}
@Override
public int getChildrenCount(int groupPosition) {
Elem e = mData.get(groupPosition);
if (!e.canExpand) return 0;
// check if either e.title OR e.desc is long enough
// to expand
if (is_long_enough( ...))
return 1;
return 0;
}
// then override the getGroupView and getChildView methods to return your views
}
在布局中声明ExpandableListView
时,将其groupIndicator设置为null
<ExpandableListView
android:id="@+id/list_id"
android:groupIndicator="@null"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:choiceMode="singleChoice" />