Я динамически создаю кнопки. Сначала я их стилизовал, используя XML, и я пытаюсь взять XML ниже и сделать его программным.
<Button
android:id="@+id/buttonIdDoesntMatter"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="buttonName"
android:drawableLeft="@drawable/imageWillChange"
android:onClick="listener"
android:layout_width="fill_parent">
</Button>
Это то, что я до сих пор. Я могу сделать все, кроме рисования.
linear = (LinearLayout) findViewById(R.id.LinearView);
Button button = new Button(this);
button.setText("Button");
button.setOnClickListener(listener);
button.setLayoutParams(
new LayoutParams(
android.view.ViewGroup.LayoutParams.FILL_PARENT,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT
)
);
linear.addView(button);
drawableLeft
. Я попробовал ваши предложения здесь, чтобы установить «запрещенную иконку», когда вы нажимаете в папке без разрешений на чтение, и это работает. Однако при смене папок и перезагрузке адаптера запрещенный значок сохраняется (то естьdrawableLeft
не перерисовывается). Знаете ли вы, как подать заявкуnotifyDataSetChanged
такжеdrawableLeft
, без выполнения цикла? Спасибо!Listview
элемента при изменении данных, который на самом деле не имеет отношения к этому вопросу или ответу. Я предлагаю вам оставить вопрос вместо комментария.setCompoundDrawablesWithIntrinsicBounds( 0, 0, R.drawable.money, 0 )
Не работает, если я определить drawableRight в layout.xml. Если я установлю оригинальную иконку внутриonCreate()
, то изменение сработает. Может ли это быть связано с API 19?Просто вы можете попробовать это также
источник
•
Kotlin Version
Используйте фрагмент ниже, чтобы добавить левую кнопку для кнопки:
,
•
Important Point in Using Android Vector Drawable
Если вы используете векторное изображение Android и хотите иметь обратную совместимость для API ниже 21 , добавьте следующие коды:
На уровне приложения
build.gradle
:В классе приложений:
источник
Context#.getDrawable(resId)
не рекомендуется, поэтому его использование может вызвать некоторые проблемы.Для меня это сработало:
источник
источник
Я сделал это:
источник
Если вы используете drawableStart , drawableEnd , drawableTop или drawableBottom ; Вы должны использовать " setCompoundDrawablesRelativeWithIntrinsicBounds "
источник
Работал на меня. Чтобы установить рисование справа
источник
как указал @ Jérémy Reynaud, как описано в этом ответе , самый безопасный способ установить левую отрисовку без изменения значений других отрисовок (верхней, правой и нижней) - использовать предыдущие значения кнопки с setCompoundDrawablesWithIntrinsicBounds :
Таким образом, все ваши предыдущие рисунки будут сохранены.
источник
Ниже приведен способ изменить цвет левого значка в редактируемом тексте и установить его в левой части.
источник
Может быть полезно:
источник
Добавить расширение Kotlin
Если вы собираетесь делать это часто, добавление расширения сделает ваш код более читабельным. Кнопка расширяет TextView; используйте кнопку, если вы хотите быть более узким.
Чтобы использовать расширение, просто позвоните
В любое время, когда вам нужно очистить, не передавайте параметр или сделайте другое расширение под названием
removeDrawables
источник
Попробуй это:
источник
Попробуй это:
источник