如何更改适配器内部视图的高度?

时间:2017-12-07 07:13:16

标签: android android-layout

我想更改视图的高度并降低所有底部视图的高度。这在片段中运行良好,但在适配器中不起作用。 我不想挤压主视图,我只需要增加containerAvatar的大小。

public class OrderAdapter extends ArrayAdapter {

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    convertView = layoutInflater.inflate(R.layout.open_order_item, parent, false);

    containerAvatar = convertView.findViewById(R.id.container_avatar_size);
    imgAvatar = convertView.findViewById(R.id.img_open_order_avatar);

    Glide.with(context)
            .load("http://neuronovosti.ru/wp-content/uploads/2017/12/Drosophila-Brain-1024x1024.jpg")
            .into(imgAvatar);

    containerAvatar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            final ViewGroup.LayoutParams lp = containerAvatar.getLayoutParams();
            final ResizeAnimation a = new ResizeAnimation(containerAvatar);
            a.setDuration(500);
            a.setParams(lp.height, lp.height * 2);
            containerAvatar.startAnimation(a);
        }
    });

    return convertView;
}

public class ResizeAnimation extends Animation {
    private int startHeight;
    private int deltaHeight; // distance between start and end height
    private View view;

public ResizeAnimation(View v) {
    this.view = v;
}

@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {

    view.getLayoutParams().height = (int) (startHeight + deltaHeight * interpolatedTime);
    view.requestLayout();
}

public void setParams(int start, int end) {

    this.startHeight = start;
    deltaHeight = end - startHeight;
}

@Override
public void setDuration(long durationMillis) {
    super.setDuration(durationMillis);
}

@Override
public boolean willChangeBounds() {
    return true;
}

enter image description here

这就是你需要的东西 enter image description here

enter image description here

1 个答案:

答案 0 :(得分:2)

尝试setLayoutParams() <{1}} 的方法 -

View

在适配器上添加了

private void setDimensions(View view, int width, int height){
    android.view.ViewGroup.LayoutParams params = view.getLayoutParams();
    params.width = width;
    params.height = height;
    view.setLayoutParams(params);
}