如何使视图的高度动态化

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);

干得不错!