如何使视图的高度动态化
How to make a View's Height Dynamic
代码为:
View v = convertView;
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
v = inflater.inflate(R.layout.newsfeed_custom_listview_facebook, parent, false);
TextView username = (TextView) v.findViewById(R.id.username);
TextView prayerTitle = (TextView) v.findViewById(R.id.prayerTitle);
TextView createdOn = (TextView) v.findViewById(R.id.createdOn);
TextView prayerMessage = (TextView) v.findViewById(R.id.prayerMessage);
ScrollView scrollView = (ScrollView) v.findViewById(R.id.scrollView);
MixedObj menuItemsBean = menuItems.get(position);
RoundedImageView img = (RoundedImageView) v.findViewById(R.id.image);
username.setText(menuItemsBean.name);
prayerTitle.setText(menuItemsBean.title);
createdOn.setText(menuItemsBean.created_on);
TextView textView = new TextView(context);
//prayerMessage.setText(menuItemsBean.message);
RelativeLayout.LayoutParams p = new
RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
p.addRule(RelativeLayout.BELOW, R.id.image);
textView.setLayoutParams(p);
textView.setPadding(5, 5, 5, 5);
textView.setTextColor(Color.parseColor("#ffffff"));
//textView.setText(menuItemsBean.message);
String message = "please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life end";
message = menuItemsBean.message;
textView.setText(message);
ViewGroup viewGroup = (ViewGroup) v;
viewGroup.addView(textView);
RelativeLayout.LayoutParams param = (RelativeLayout.LayoutParams)
textView.getLayoutParams();
AbsListView.LayoutParams layoutParams = (AbsListView.LayoutParams)
viewGroup.getLayoutParams();
//layoutParams.height += ();
return v;
我想更改为 listView
膨胀的自定义视图的高度。
我已经尝试过了,但它不起作用我希望每个单元格都有不同的高度,具体取决于消息 TextView
Size.
任何人请帮助..
你实现的问题是ListView的基础知识。
从基础对象,ListView 只为所有视图调用单一大小,并使每个操作无效。对于您的任务,您需要使用自己的列表。例如
1)
使用几种布局:
<ScrollView>
<LinearLayout>
//Add in loop all your views in code above!
</LinearLayout>
</ScrollView>
2)
使用 LinkedListView:
此视图类似于 ListView,但包含 link 您添加的每个视图,并且不会使它们失效。因此,您可以使用它,而不仅仅是简单的 ListView - 您可以在运行时更改任何视图而不会产生任何工件。在 Github - LinkedListView
上查看此列表
更新:
使用 LinkedListView,只需导入到您的项目中即可。比创建适配器
public class YourAdapter extends LinkedListView.Adapter {
private Context mainContext;
private LinkedList<View> mainViewList;
public CirclePagerAdapter (Context mainContext) {
this.mainContext = mainContext;
mainViewList = new LinkedList<>();
}
//CALL THIS TO ADD YOUR OWN VIEW
public void addSimpleView (View v) {
mainViewList.add(v)
notifyDatasetChanged();
}
//CALL THIS TO DELETE VIEW
public void deleteView(int index) {
mainViewList.remove(index);
notifyDatasetChanged();
}
@Override
public View getObjectView(int position) {
if (position < mainViewList.size())
return mainViewList.get(position);
return null;
}
@Override
public int getObjectCount() {
return mainViewList.size();
}
在 Activity!
中创建适配器调用后
LinkedListView listView = new LinkedListView (getContext());
LinkedListView.Adapter adapter = new MyBaseAdapter ();
listview.setViewPager(adapter);
干得不错!
代码为:
View v = convertView;
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
v = inflater.inflate(R.layout.newsfeed_custom_listview_facebook, parent, false);
TextView username = (TextView) v.findViewById(R.id.username);
TextView prayerTitle = (TextView) v.findViewById(R.id.prayerTitle);
TextView createdOn = (TextView) v.findViewById(R.id.createdOn);
TextView prayerMessage = (TextView) v.findViewById(R.id.prayerMessage);
ScrollView scrollView = (ScrollView) v.findViewById(R.id.scrollView);
MixedObj menuItemsBean = menuItems.get(position);
RoundedImageView img = (RoundedImageView) v.findViewById(R.id.image);
username.setText(menuItemsBean.name);
prayerTitle.setText(menuItemsBean.title);
createdOn.setText(menuItemsBean.created_on);
TextView textView = new TextView(context);
//prayerMessage.setText(menuItemsBean.message);
RelativeLayout.LayoutParams p = new
RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
p.addRule(RelativeLayout.BELOW, R.id.image);
textView.setLayoutParams(p);
textView.setPadding(5, 5, 5, 5);
textView.setTextColor(Color.parseColor("#ffffff"));
//textView.setText(menuItemsBean.message);
String message = "please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life end";
message = menuItemsBean.message;
textView.setText(message);
ViewGroup viewGroup = (ViewGroup) v;
viewGroup.addView(textView);
RelativeLayout.LayoutParams param = (RelativeLayout.LayoutParams)
textView.getLayoutParams();
AbsListView.LayoutParams layoutParams = (AbsListView.LayoutParams)
viewGroup.getLayoutParams();
//layoutParams.height += ();
return v;
我想更改为 listView
膨胀的自定义视图的高度。
我已经尝试过了,但它不起作用我希望每个单元格都有不同的高度,具体取决于消息 TextView
Size.
任何人请帮助..
你实现的问题是ListView的基础知识。 从基础对象,ListView 只为所有视图调用单一大小,并使每个操作无效。对于您的任务,您需要使用自己的列表。例如
1) 使用几种布局:
<ScrollView>
<LinearLayout>
//Add in loop all your views in code above!
</LinearLayout>
</ScrollView>
2) 使用 LinkedListView:
此视图类似于 ListView,但包含 link 您添加的每个视图,并且不会使它们失效。因此,您可以使用它,而不仅仅是简单的 ListView - 您可以在运行时更改任何视图而不会产生任何工件。在 Github - LinkedListView
上查看此列表更新:
使用 LinkedListView,只需导入到您的项目中即可。比创建适配器
public class YourAdapter extends LinkedListView.Adapter {
private Context mainContext;
private LinkedList<View> mainViewList;
public CirclePagerAdapter (Context mainContext) {
this.mainContext = mainContext;
mainViewList = new LinkedList<>();
}
//CALL THIS TO ADD YOUR OWN VIEW
public void addSimpleView (View v) {
mainViewList.add(v)
notifyDatasetChanged();
}
//CALL THIS TO DELETE VIEW
public void deleteView(int index) {
mainViewList.remove(index);
notifyDatasetChanged();
}
@Override
public View getObjectView(int position) {
if (position < mainViewList.size())
return mainViewList.get(position);
return null;
}
@Override
public int getObjectCount() {
return mainViewList.size();
}
在 Activity!
中创建适配器调用后LinkedListView listView = new LinkedListView (getContext());
LinkedListView.Adapter adapter = new MyBaseAdapter ();
listview.setViewPager(adapter);
干得不错!