Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import android.content.Context;
- import android.graphics.Rect;
- import android.support.design.widget.TextInputLayout;
- import android.util.AttributeSet;
- import java.lang.reflect.Field;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- public class CustomTextInputLayout extends TextInputLayout {
- private Object collapsingTextHelper;
- private Rect bounds;
- private Method recalculateMethod;
- public CustomTextInputLayout(Context context) {
- this(context, null);
- }
- public CustomTextInputLayout(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
- }
- public CustomTextInputLayout(Context context, AttributeSet attrs, int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- init();
- }
- @Override
- protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
- super.onLayout(changed, left, top, right, bottom);
- adjustBounds();
- }
- private void init() {
- try {
- Field cthField = TextInputLayout.class.getDeclaredField("mCollapsingTextHelper");
- cthField.setAccessible(true);
- collapsingTextHelper = cthField.get(this);
- Field boundsField = collapsingTextHelper.getClass().getDeclaredField("mCollapsedBounds");
- boundsField.setAccessible(true);
- bounds = (Rect) boundsField.get(collapsingTextHelper);
- recalculateMethod = collapsingTextHelper.getClass().getDeclaredMethod("recalculate");
- }
- catch (NoSuchFieldException | IllegalAccessException | NoSuchMethodException e) {
- collapsingTextHelper = null;
- bounds = null;
- recalculateMethod = null;
- e.printStackTrace();
- }
- }
- private void adjustBounds() {
- if (collapsingTextHelper == null) {
- return;
- }
- try {
- bounds.left = getEditText().getLeft() + getEditText().getPaddingLeft();
- recalculateMethod.invoke(collapsingTextHelper);
- }
- catch (InvocationTargetException | IllegalAccessException | IllegalArgumentException e) {
- e.printStackTrace();
- }
- }
- }
- <com.mycompany.myapp.CustomTextInputLayout
- android:id="@+id/text_input_layout"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:hint="Model (Example i10, Swift, etc.)"
- app:hintTextAppearance="@style/TextLabel">
- <android.support.design.widget.TextInputEditText
- android:id="@+id/edit_text"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:drawableLeft="@drawable/bmw"
- android:text="M Series" />
- </com.mycompany.myapp.CustomTextInputLayout>
- editText.setCompoundDrawablePadding(your padding value);
Add Comment
Please, Sign In to add comment