Dynamicznie tworzę przyciski. Najpierw nadałem im styl XML i staram się wziąć XML poniżej i uczynić go programatycznym.
<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>
To właśnie mam. Mogę zrobić wszystko oprócz tego, co jest możliwe.
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
. Wypróbowałem tutaj Twoje sugestie, aby ustawić „zabronioną ikonę” po kliknięciu folderu bez uprawnień do odczytu i działa. Jednak po zmianie folderów i ponownym załadowaniu adaptera ikona zabroniona pozostaje wyświetlana (tzn. Nie jestdrawableLeft
przerysowana). Czy wiesz, jak ubiegać sięnotifyDataSetChanged
o todrawableLeft
bez robienia pętli? Dzięki!Listview
elementu, gdy zmieniają się dane - co tak naprawdę nie ma związku z tym pytaniem lub odpowiedzią. Sugeruję, abyś zamieścił pytanie zamiast komentarza.setCompoundDrawablesWithIntrinsicBounds( 0, 0, R.drawable.money, 0 )
Nie działa, jeśli zdefiniować drawableRight w layout.xml. Jeśli ustawię oryginalną ikonę w środkuonCreate()
, zmiana zadziała. Czy może to być związane z API 19?Po prostu możesz tego spróbować
źródło
•
Kotlin Version
Użyj poniższego fragmentu, aby dodać lewy przycisk do rysowania:
.
•
Important Point in Using Android Vector Drawable
Jeśli używasz rysowanego wektora androida i chcesz mieć kompatybilność wsteczną dla API poniżej 21 , dodaj następujące kody do:
Na poziomie aplikacji
build.gradle
:W klasie aplikacji:
źródło
Context#.getDrawable(resId)
jest przestarzała, więc korzystanie z niej może powodować pewne problemy.Dla mnie zadziałało:
źródło
źródło
Ja to zrobiłem:
źródło
Jeśli używasz drawableStart , drawableEnd , drawableTop lub drawableBottom ; musisz użyć „ setCompoundDrawablesRelativeWithIntrinsicBounds ”
źródło
Pracował dla mnie. Aby ustawić rysowanie po prawej stronie
źródło
jak wskazał @ Jérémy Reynaud, jak opisano w tej odpowiedzi , najbezpieczniejszym sposobem ustawienia lewej wysuwalnej bez zmiany wartości innych drawable (górna, prawa i dolna) jest użycie poprzednich wartości z przycisku z setCompoundDrawablesWithIntrinsicBounds :
Tak więc wszystkie poprzednie rysunki zostaną zachowane.
źródło
Poniżej przedstawiono sposób zmiany koloru lewej ikony w tekście edycji i ustawienia jej po lewej stronie.
źródło
Może być pomocny:
źródło
Dodaj rozszerzenie Kotlin
Jeśli zamierzasz to robić często, dodanie rozszerzenia sprawia, że kod jest bardziej czytelny. Przycisk rozszerza TextView; użyj przycisku, jeśli chcesz być bardziej wąski.
Aby skorzystać z rozszerzenia, wystarczy zadzwonić
Za każdym razem, gdy trzeba wyczyścić, nie należy przekazywać parametrów ani wykonywać innych połączeń o nazwie
removeDrawables
źródło
Spróbuj tego:
źródło
Spróbuj tego:
źródło