How to add floating label on Spinner

前端 未结 10 1734
Happy的楠姐
Happy的楠姐 2020-12-12 14:46

After using the Android Design Support Library\'s TextInputLayout to place a floating label above an EditText component, I was wondering if there is a way to add a floating

10条回答
  •  盖世英雄少女心
    2020-12-12 15:18

    SpinnerCustom.java

    package com.pozitron.tfkb.customviews;
    
    import android.content.Context;
    import android.content.res.TypedArray;
    import android.support.annotation.Nullable;
    import android.text.SpannableString;
    import android.util.AttributeSet;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.LinearLayout;
    
    import com.pozitron.commons.customviews.TextViewFont;
    import com.pozitron.tfkb.R;
    
    import butterknife.BindView;
    import butterknife.ButterKnife;
    
    /**
     * Created by so12607 on 31/01/2018.
     */
    
    public class SpinnerCustom extends LinearLayout {
    
        @BindView(R.id.layoutSpinnerCustomLabel)
        TextViewFont layoutSpinnerCustomLabel;
    
        @BindView(R.id.layoutSpinnerCustomSpinner)
        TextViewFont layoutSpinnerCustomSpinner;
    
        @BindView(R.id.layoutSpinner)
        LinearLayout layoutSpinner;
    
        private View v;
    
        public SpinnerCustom(Context context) {
            this(context, null);
        }
    
        public SpinnerCustom(Context context, @Nullable AttributeSet attrs) {
            this(context, attrs, 0);
    
        }
    
        public SpinnerCustom(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
    
            v = LayoutInflater.from(context).inflate(R.layout.layout_spinner_custom, this, true);
            ButterKnife.bind(this);
    
            if (!isInEditMode()) {
    
                TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.SpinnerCustom, 0, 0);
                final String label = array.getString(R.styleable.SpinnerCustom_label);
                final boolean enable = array.getBoolean(R.styleable.SpinnerCustom_enabled, true);
                layoutSpinnerCustomLabel.setText(label);
    
                layoutSpinnerCustomLabel.setEnabled(enable);
                layoutSpinnerCustomSpinner.setEnabled(enable);
                layoutSpinner.setEnabled(enable);
                layoutSpinner.setClickable(enable);
                v.setEnabled(enable);
                v.setClickable(enable);
                array.recycle();
            }
        }
    
        public void setText(String text) {
            layoutSpinnerCustomSpinner.setText(text);
        }
    
        public void setText(SpannableString text) {
            layoutSpinnerCustomSpinner.setText(text);
        }
    
        public void setText(CharSequence text) {
            layoutSpinnerCustomSpinner.setText(text);
        }
    
        public void setLabel(String text) {
            layoutSpinnerCustomLabel.setText(text);
        }
    
        public void setError(SpannableString text) {
            layoutSpinnerCustomSpinner.setError(text);
        }
    
        public void setEnabled(boolean enable) {
            layoutSpinnerCustomLabel.setEnabled(enable);
            layoutSpinnerCustomSpinner.setEnabled(enable);
            layoutSpinner.setEnabled(!enable);
            layoutSpinner.setClickable(!enable);
        }
    }
    

    layout_spinner_custom.xml

    
    
    
        
    
        
    
    
    

    style.xml

    
    
    
    

提交回复
热议问题