web-dev-qa-db-fra.com

appliquer backgroundtint à background drawable pour API 19

La teinte de fond est correctement appliquée sur l'API 23, mais pas sur l'API 19. Comment puis-je obtenir la teinte attirante pour l'API 19 et les versions inférieures?

                    <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" />

Bien entendu, mon activité s'étend à AppCompatActivity.

13
ema3272

Cela a fonctionné pour moi sur le périphérique API 19, bibliothèque de support v7

disposition

<Button
    Android:id="@id/btn"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:text="@string/label"
    style="@style/Button"
    />

modes

<style name="Button" parent="Base.TextAppearance.AppCompat.Button" >
    <item name="backgroundTint">@color/fab_bg</item>
</style>
24
DoruChidean

Vous devez utiliser la bibliothèque de support Android 22.1+ pour utiliser AppCompatButton http://Android-developers.blogspot.se/2015/04/Android-support-library-221.html

Mais malheureusement, vous ne pourrez pas le faire dans le XML.

Dans le onCreate de votre activité, à ce qui suit:

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);
    }
}

Plus d'infos ici: L'arrière-plan de Lollipop n'a aucun effet sur un bouton

Astuce: vous pourrez peut-être tout faire dans le xml en utilisant app: backgroundTint = "@ color/button_material_light", mais je n’ai pas testé.

--MODIFIER--

Vérifiez @ ema3272 deuxième commentaire pour la solution complète

4
jonathanrz

Je connais sa petite question un peu ancienne mais vous n'avez même pas besoin de créer un élément de style.

Utilisez simplement AppCompatButton à partir de la bibliothèque de support avec 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" />
2
Paresh Dudhat

Vous devez mettre à jour un "bouton" en "androidx.appcompat.widget.AppCompatButton" et "Android: backgroundTint" en "app: androidTint".

Avant: 

 <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"
                />

Après:

 <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"
                />
0
Adobels