美文网首页
TextLinearLayout

TextLinearLayout

作者: Ford_ | 来源:发表于2021-12-12 18:40 被阅读0次
    package com.study.myapplication;
    
    import android.content.Context;
    import android.util.AttributeSet;
    import android.util.Log;
    import android.view.View;
    import android.widget.RelativeLayout;
    
    import androidx.annotation.Nullable;
    
    public class TextLinearLayout extends RelativeLayout {
        private static final String TAG = TextLinearLayout.class.getSimpleName();
        private boolean isMeasure = false;
    
        public TextLinearLayout(Context context) {
            super(context);
        }
    
        public TextLinearLayout(Context context, @Nullable AttributeSet attrs) {
            super(context, attrs);
        }
    
        public TextLinearLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
    
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    
            int layoutLength = this.getMeasuredWidth();
            View leftView = getChildAt(0);
            View rightView = getChildAt(1);
            int left = leftView.getMeasuredWidth();
            int right = rightView.getMeasuredWidth();
            int actualLength = left + right;
            int paddingLength = this.getPaddingLeft() + this.getPaddingRight() + 32;
    
            Log.e(TAG, "layout:" + layoutLength + "  left:" + left + "  right:" + right + " padding:" + paddingLength
                    + " all:" + (left + right + paddingLength) + "  isChao:" + isMeasure);
            if (actualLength < (layoutLength - paddingLength)) {
                Log.e(TAG, "没有超。。。");
                return;
            } else {
                if (isMeasure == true) {
                    return;
                }
                int leftWith = (int) ((layoutLength) * (1.0 * left / actualLength));
                int rightWith = (int) ((layoutLength) * (1.0 * right / actualLength));
    
                Log.e(TAG, "left " + leftWith + "   right" + rightWith
                +" paddlf:"+leftView.getPaddingRight()+" paddrih:"+rightView.getPaddingLeft());
                RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(leftWith-24
                        , RelativeLayout.LayoutParams.WRAP_CONTENT);
                lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
                leftView.setLayoutParams(lp);
    
                RelativeLayout.LayoutParams ll = new RelativeLayout.LayoutParams(rightWith
                        , RelativeLayout.LayoutParams.WRAP_CONTENT);
                ll.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
                rightView.setLayoutParams(ll);
    
                isMeasure = true;
    
            }
    
    
        }
    
        @Override
        protected void onLayout(boolean changed, int l, int t, int r, int b) {
            super.onLayout(changed, l, t, r, b);
            Log.e("LAYOUT", "layout...");
        }
    }
    
    
    
    
     <com.study.myapplication.TextLinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:paddingStart="12dp"
            android:paddingLeft="12dp"
            android:paddingEnd="12dp"
            android:paddingRight="12dp"
            >
    
            <TextView
                android:id="@+id/tv_left"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_marginTop="10dp"
                android:paddingRight="8dp"
                android:layout_marginBottom="10dp"
                android:text="custom service"
                android:textSize="17sp" />
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:gravity="end|center_vertical">
                <TextView
                    android:id="@+id/tv_right"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="end|right"
                    android:text="2355"
                    android:textSize="17sp" />
                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@mipmap/arrow_back_white" />
            </LinearLayout>
    
    
        </com.study.myapplication.TextLinearLayout>
    
    

    相关文章

      网友评论

          本文标题:TextLinearLayout

          本文链接:https://www.haomeiwen.com/subject/ounrfrtx.html