Android setCompoundDrawablePadding не работает - PullRequest
0 голосов
/ 30 октября 2018

У меня есть TextInputEditText в моем макете, к которому мне нужно добавить нарисованный конец. Появляется нарисованный конец, но я не могу добавить к нему нарисованный конец отступа.

Ниже приведен фрагмент кода, который я пробовал:

  editText.setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(R.drawable.error), null);
  editText.setCompoundDrawablePadding(getResources().getDimensionPixelSize(R.dimen.image_padding));

1 Ответ

0 голосов
/ 07 ноября 2018

Поскольку getResources().getDrawable устарело, вместо него лучше использовать ContextCompat.getDrawable(). Если drawablePadding не изменяется и не требуется обрабатывать его программно, попробуйте установить его в файле xml.

editText.setCompoundDrawablesWithIntrinsicBounds(
    null, 
    null, 
    ContextCompat.getDrawable(context, R.drawable.error), 
    null
);

В макете XML:

<android.support.design.widget.TextInputEditText
    android:id="@+id/editText"
    ...
    android:drawablePadding="@dimen/image_padding"
/>

.

Если вы используете векторное изображение для Android и хотите иметь обратную совместимость для API ниже 21 , добавьте следующие фрагменты.

На уровне приложения build.gradle:

android {
    defaultConfig {
        vectorDrawables.useSupportLibrary = true
    }
}

В классе приложений:

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...