Примените backgroundTint к фону, который можно нарисовать для API 19
backgroundTint
правильно применяется к API 23, но не к API 19. Как я могу получить оттенок для рисования для API 19 и ниже?
<Button
android:layout_width="40dp"
android:layout_height="40dp"
android:id="@+id/AbResetBtn"
android:background="@android:drawable/stat_notify_sync"
android:backgroundTint="@color/button_material_light" />
Конечно, мой Activity
расширяется AppCompatActivity
.
Ответы
Ответ 1
Это работало для меня на устройстве API19, поддержка lib v7
макет
<Button
android:id="@id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label"
style="@style/Button"
/>
стили
<style name="Button" parent="Base.TextAppearance.AppCompat.Button" >
<item name="backgroundTint">@color/fab_bg</item>
</style>
Ответ 2
Я знаю его немного старый вопрос, но вам даже не нужно создавать элемент стиля.
Просто используйте AppCompatButton из библиотеки поддержки с app: namespace.
<android.support.v7.widget.AppCompatButton android:layout_width="40dp"
android:layout_height="40dp"
android:id="@+id/AbResetBtn"
android:background="@android:drawable/stat_notify_sync"
app:backgroundTint="@color/button_material_light" />
Ответ 3
Вам нужно использовать библиотеку поддержки Android 22.1+ для использования AppCompatButton http://android-developers.blogspot.se/2015/04/android-support-library-221.html
Но, к сожалению, вы не сможете это сделать в xml.
В onCreate вашей деятельности:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AppCompatButton v = (AppCompatButton) findViewById(R.id.mybutton);
ColorStateList csl = new ColorStateList(new int[][]{new int[0]}, new int[]{0xffffcc00});
v.setSupportBackgroundTintList(csl);
}
}
Дополнительная информация здесь: Фоновый оттенок Lollipop не влияет на кнопку
Совет. Возможно, вы сможете делать все в xml с помощью приложения: backgroundTint = "@color/button_material_light", но я не тестировал.
- EDIT -
Проверить @ema3272 второй комментарий для полного решения
Ответ 4
Вы должны обновить "Button" до "androidx.appcompat.widget.AppCompatButton" и "android: backgroundTint" до "app: androidTint"
До:
<Button
android:id="@+id/button"
android:layout_width="200dp"
android:layout_height="0dp"
android:textColor="@color/colorAccent"
android:backgroundTint="@color/colorAccent"
android:background="@drawable/empty_list_state_button"
android:text="@string/button_title"
app:layout_constraintTop_toBottomOf="@id/distance"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
/>
После:
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/button"
android:layout_width="200dp"
android:layout_height="0dp"
android:textColor="@color/colorAccent"
app:backgroundTint="@color/colorAccent"
android:background="@drawable/empty_list_state_button"
android:text="@string/button_title"
app:layout_constraintTop_toBottomOf="@id/distance"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
/>