Linjiajia
2023-07-25 82e57df230ecb744af6c8865f80870ba03c86d89
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package com.android.app_base.base.adapter.databinding;
 
import android.text.TextUtils;
import android.text.method.HideReturnsTransformationMethod;
import android.text.method.PasswordTransformationMethod;
import android.widget.EditText;
import android.widget.ImageView;
 
import androidx.databinding.BindingAdapter;
import androidx.databinding.InverseBindingAdapter;
 
import java.math.BigDecimal;
import java.util.Locale;
 
/**
 * @author Ljj
 * @date 2023.03.26. 17:38
 * @desc
 */
public class EditTextAdapter {
    @BindingAdapter({"passwordVisibility"})
    public static void setPasswordVisibility(EditText editText, boolean visibility) {
        if(visibility){
            editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
        }else {
            editText.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
        }
        editText.setSelection(editText.length());
    }
 
    @BindingAdapter(value = {"android:text", "need_modify_null"}, requireAll = false)
    public static void setText(EditText view, double value,boolean needModifyNull) {
        String valueString = BigDecimal.valueOf(value).stripTrailingZeros().toPlainString();
        if(needModifyNull){
            view.setText(value == 0 ? null : valueString);
        }else {
            view.setText(value == 0 ? "0" : valueString);
        }
//        String formattedValue = String.format(Locale.CHINA, "%.2f", value);
//        if (!TextUtils.equals(view.getText().toString(), formattedValue)) {
//            view.setText(formattedValue);
//        }
    }
 
    @InverseBindingAdapter(attribute = "android:text")
    public static double getText(EditText view) {
        String text = view.getText().toString();
        if (TextUtils.isEmpty(text)) {
            return 0.0;
        } else {
            return Double.parseDouble(text);
        }
    }
 
    @BindingAdapter({"isEditable"})
    public static void setIsEditable(EditText editText, boolean isEditable) {
        if(isEditable){
            editText.setFocusable(true);
            editText.setCursorVisible(true);
            editText.setLongClickable(true);
        }else {
            editText.setFocusable(false);
            editText.setCursorVisible(false);
            editText.setLongClickable(false);
        }
    }
}