You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

249 lines
6.8 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.rehome.meetingbook.weiget;
/**
* Create By HuangWenFei
* 创建日期2022-12-09 15:10
* 描述:
*/
import android.content.Context;
import android.content.res.TypedArray;
import androidx.annotation.Nullable;
import android.graphics.Color;
import android.text.Html;
import android.text.InputType;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
import com.rehome.meetingbook.R;
import com.zhy.autolayout.AutoLinearLayout;
import com.zhy.autolayout.utils.AutoUtils;
/**
* Created by Rehome-rjb1 on 2017/5/9.
* <p>
* 输入框
* <declare-styleable name="InputLayout">
* <attr name="tv_title" format="string" /><!-- 标题 -->
* <attr name="isShowSelect" format="boolean" /><!-- 是否显示编辑框 -->
* <attr name="isShowTextView" format="boolean" /><!-- 是否显示文本框 -->
* <attr name="isShowNumSubView" format="boolean" /><!-- 是否显示可以加减的控件 -->
* <attr name="minValue" format="integer" /><!-- 设置可以加减控件的最大值 -->
* <attr name="hintText" format="string" /><!-- 提示文本 -->
* <attr name="must" format="boolean" /><!-- 是否一定要填写,如果一定要填写 就显示红色的* -->
* </declare-styleable>
*/
public class InputLayout extends AutoLinearLayout {
TextView tvTitle;
ClearEditText etContent;
TextView tvContent;
NumAddSubView numAddSubView;
ImageButton ibtnSelect;
private View view;
public InputLayout(Context context) {
super(context, null);
initView();
}
public InputLayout(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
initView();
if (attrs != null) {
TypedArray type = context.obtainStyledAttributes(attrs, R.styleable.InputLayout);
String title = type.getString(R.styleable.InputLayout_tv_title);
Boolean isShowSelect = type.getBoolean(R.styleable.InputLayout_isShowSelect, false);
Boolean isShowTextView = type.getBoolean(R.styleable.InputLayout_isShowTextView, false);
Boolean isShowNumSubView = type.getBoolean(R.styleable.InputLayout_isShowNumSubView, false);
String hintText = type.getString(R.styleable.InputLayout_hintText);
Boolean must = type.getBoolean(R.styleable.InputLayout_must, false);
int minValue = type.getInt(R.styleable.InputLayout_minValue, 1);
numAddSubView.setMinNum(minValue);
setHintText(hintText);
setTvTitle(title, must);
isShowIbtnSelect(isShowSelect);
isShowTextView(isShowTextView);
isShowNumSubView(isShowNumSubView);
type.recycle();
}
}
public InputLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView();
}
public void setTitleColor(){
tvTitle.setTextColor(Color.parseColor("#737373"));
}
private void initView() {
if (view == null) {
view = View.inflate(getContext(), R.layout.layout_input, this);
AutoUtils.auto(view);
tvTitle = view.findViewById(R.id.tv_title);
etContent = view.findViewById(R.id.et_content);
tvContent = view.findViewById(R.id.tv_content);
numAddSubView = view.findViewById(R.id.numAddSubView);
ibtnSelect = view.findViewById(R.id.ibtn_select);
}
etContent.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (event != null) {
return (event.getKeyCode() == KeyEvent.KEYCODE_ENTER);
} else {
return false;
}
}
});
}
public void setTvTitle(String title, boolean must) {
if (must) {
String mustTitle = title + "<font color='red'>*</font>";
tvTitle.setText(Html.fromHtml(mustTitle + ":"));
} else {
tvTitle.setText(title + ":");
}
}
public void isShowIbtnSelect(boolean isShow) {
ibtnSelect.setVisibility(isShow ? VISIBLE : GONE);
}
public void isShowTextView(boolean isShow) {
if (isShow) {
tvContent.setVisibility(VISIBLE);
etContent.setVisibility(GONE);
}
}
public void isShowNumSubView(boolean isShow) {
numAddSubView.setVisibility(isShow ? VISIBLE : GONE);
}
/**
* 设置选择控件的点击事件
*
* @param listener
*/
public void setIbtnSelectOnClickListener(OnClickListener listener) {
ibtnSelect.setOnClickListener(listener);
}
/**
* 设置文本框点击事件
*
* @param listener
*/
public void setTvContentOnClickListener(OnClickListener listener) {
tvContent.setOnClickListener(listener);
}
/**
* 设置文本内容
*
* @param content
*/
public void setContent(String content) {
if (tvContent.getVisibility() == VISIBLE) {
tvContent.setText(content);
} else {
etContent.setText(content);
}
}
public void setHintText(String hintText) {
tvContent.setHint(hintText);
}
/**
* 获取文本内容
*
* @return
*/
public String getContent() {
String content;
if (tvContent.getVisibility() == VISIBLE) {
content = tvContent.getText().toString();
} else {
content = etContent.getText().toString();
}
return content;
}
/**
* 设置为+号的按钮
*/
public void setIbtnSelectIcon() {
ibtnSelect.setImageResource(R.drawable.add_gray);
}
/**
* 获取加减控件的值
*
* @return
*/
public String getNum() {
return numAddSubView.getNum();
}
public void setNum(String num) {
numAddSubView.setNum(num);
}
/**
* 设置不可编辑
*
* @param enabled
*/
@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
// etContent.setVisibility(VISIBLE);
// tvContent.setVisibility(VISIBLE);
etContent.setEnabled(enabled);
tvContent.setEnabled(enabled);
ibtnSelect.setEnabled(enabled);
numAddSubView.setEnabled(enabled);
}
/**
* 设置为数字类型的InputType
*/
public void setEtNumInputType() {
etContent.setInputType(InputType.TYPE_CLASS_NUMBER);
}
/**
* 设置为数字类型的InputType 可加小数点
*/
public void setNo() {
etContent.setInputType(InputType.TYPE_CLASS_PHONE);
}
}