TextInputEditText.java

 1package eu.siacs.conversations.ui.widget;
 2
 3
 4import android.content.Context;
 5import android.os.Build;
 6import android.util.AttributeSet;
 7import android.widget.TextView;
 8
 9import java.lang.reflect.Field;
10
11/**
12 * A wrapper class to fix some weird fuck ups on Meizu devices
13 * credit goes to the people in this thread https://github.com/android-in-china/Compatibility/issues/11
14 */
15public class TextInputEditText extends com.google.android.material.textfield.TextInputEditText {
16
17    public TextInputEditText(Context context) {
18        super(context);
19    }
20
21    public TextInputEditText(Context context, AttributeSet attrs) {
22        super(context, attrs);
23    }
24
25    public TextInputEditText(Context context, AttributeSet attrs, int defStyleAttr) {
26        super(context, attrs, defStyleAttr);
27    }
28
29    @Override
30    public CharSequence getHint() {
31        String manufacturer = Build.MANUFACTURER.toUpperCase();
32        if (!manufacturer.contains("MEIZU") || Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
33            return super.getHint();
34        }else{
35            try {
36                return getSuperHintHack();
37            }catch (Exception e){
38                return super.getHint();
39            }
40        }
41    }
42
43    private CharSequence getSuperHintHack() throws NoSuchFieldException, IllegalAccessException {
44        Field hintField = TextView.class.getDeclaredField("mHint");
45        hintField.setAccessible(true);
46        return (CharSequence) hintField.get(this);
47    }
48}
49