此自定义布局实现的效果是:整个布局的最大宽度给定情况下,左边TextView宽度自适应,最多两行显示;右边控件紧贴左边TextView,如果TextView显示两行,右边控件转到紧贴第二行文本后面显示。最终的效果图如下:
自定义控件代码如下:
package com.rzc.widget;
import android.content.Context;
import android.support.annotation.Nullable;
import android.text.Layout;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
/**
* Created by rzc on 17/10/23.
*/
public class MaxTwoLineTextLabelLayout extends ViewGroup {
private static final int MAX_LINE = 2;//如果要改成TextView最大其他行数,这里跟xml文件同时修改,保持值一致(目前支持2行,其他行还有bug,需要下面代码调整下
private static final int CHILD_COUNT = 2;//目前支持包含两个子控件,左边必须是TextView,右边是任意的View或ViewGroup
public MaxTwoLineTextLabelLayout(Context context) {
super(context);
}
public MaxTwoLineTextLabelLayout(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
@Override
public LayoutParams generateLayoutParams(AttributeSet attrs) {
return new MarginLayoutParams(getContext(), attrs);
}
@Override
protected void onLayout(boolea