Je vérifiais juste les directives de conception et je m'interrogeais sur les boutons sans bordure. J'ai regardé et essayé de trouver la source, mais je ne peux pas la rassembler moi-même. Est-ce le widget Button normal mais vous ajoutez un style personnalisé (Android par défaut)? Comment rendre ces boutons sans bordure (bien sûr, vous pouvez définir l'arrière-plan sur vide, mais je n'ai pas de séparateur)?
Voici des liens vers les directives de conception:
android
layout
button
borderless
KarlKarlsom
la source
la source
Réponses:
Pour dissiper une certaine confusion:
Cela se fait en 2 étapes: Définir l'attribut d'arrière-plan du bouton sur android: attr / selectableItemBackground vous crée un bouton avec des commentaires mais pas d'arrière-plan.
La ligne pour diviser le bouton sans bordure du reste de votre mise en page se fait par une vue avec l'arrière-plan android: attr / dividerVertical
Pour une meilleure compréhension, voici une mise en page pour une combinaison de boutons OK / Annuler sans bordure en bas de votre écran (comme dans l'image de droite ci-dessus).
la source
?android:attr/selectableItemBackground
pour?attr/selectableItemBackground
et?android:attr/dividerVertical
pour?attr/dividerVertical
?android:attr/dividerVerticalfor
et?attr/dividerVertical
fonctionne également pour les abdominauxAjoutez simplement l'attribut de style suivant dans votre
Button
balise:source: http://developer.android.com/guide/topics/ui/controls/button.html#Borderless
Ensuite, vous pouvez ajouter des diviseurs comme dans la réponse de Karl .
la source
Réponse tardive, mais beaucoup de points de vue. Comme les API <11 ne sont pas encore mortes, pour ceux qui sont intéressés, voici une astuce.
Laissez votre contenant avoir la couleur désirée (peut être transparent). Ensuite, donnez à vos boutons un sélecteur avec une couleur transparente par défaut et une certaine couleur lorsque vous appuyez dessus. De cette façon, vous aurez un bouton transparent, mais changera de couleur lorsqu'il sera pressé (comme celui de holo). Vous pouvez également ajouter des animations (comme des holo). Le sélecteur devrait être quelque chose comme ceci:
Et le bouton devrait avoir
android:background="@drawable/selector_transparent_button"
PS: laissez-vous conteneur avoir les diviseurs (
android:divider='@android:drawable/...
pour API <11)PS [Newbies]: vous devez définir ces couleurs dans values / colors.xml
la source
API Level 10
etAPI Level > 10
!Pour celui qui veut des boutons sans bordure mais toujours animés lorsqu'on clique dessus. Ajoutez ceci dans le bouton.
Si vous vouliez un séparateur / ligne entre eux. Ajoutez ceci dans la disposition linéaire.
Résumé
la source
Pour le style de matériau, ajoutez
style="@style/Widget.AppCompat.Button.Borderless"
lors de l'utilisation de la bibliothèque AppCompat.la source
À partir de la source de l'application iosched, j'ai créé cette
ButtonBar
classe:Ce sera le dans
LinearLayout
lequel les boutons "OK" et "Annuler" entreront et se chargeront de les mettre dans l'ordre approprié. Ensuite, mettez ceci dans la disposition dans laquelle vous voulez les boutons:Cela vous donne l'apparence de la boîte de dialogue avec des boutons sans bordure. Vous pouvez trouver ces attributs dans le res dans le framework.
buttonBarStyle
fait le diviseur vertical et le remplissage.buttonBarButtonStyle
est défini commeborderlessButtonStyle
pour le thème Holo, mais je pense que cela devrait être le moyen le plus robuste pour l'afficher lorsque le framework veut l'afficher.la source
Regardez dans le thème des attributs
buttonBarStyle
,buttonBarButtonStyle
etborderlessButtonStyle
.la source
buttonBarButtonStyle
j'obtiens une exception JeE/AndroidRuntime(17134): Caused by: java.lang.reflect.InvocationTargetException E/AndroidRuntime(17134): Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x1/d=0x1030281 a=2 r=0x1030281}
ne sais pas pourquoi, mais l'utilisationselectableItemBackground
fonctionne à merveille.Vous pouvez également créer des boutons sans bordure via le code:
la source
android.R.attr.selectableItemBackground
nécessite l'API 21. Une idée comment faire cela sur les versions antérieures?Pour ceux qui souhaitent créer un bouton sans bordure par programme pour les API> = 8
la source
Une autre solution qui devrait fonctionner sur les plates-formes Android plus anciennes et plus récentes consiste à utiliser
attribut pour la vue Button. Mais après avoir ajouté le bouton de ligne ci-dessus ne fournira pas de retour tactile.
Pour fournir des commentaires tactiles, ajoutez le code suivant à la classe d'activité
Cela fonctionne bien pour moi.
la source
case MotionEvent.ACTION_CANCEL:
ci-dessouscase MotionEvent.ACTION_UP:
.Pour tous ceux qui recherchent encore:
héritez de votre propre style pour les barres de boutons Holo:
ou Holo Light:
et pour les boutons Holo sans bordure:
ou Holo Light:
la source
Voici comment créer un bouton sans bordure (plat) par programme sans utiliser XML
la source
ContextThemeWrapper myContext = new ContextThemeWrapper(this.getActivity(), R.style.Widget_AppCompat_Button_Borderless_Colored); Button myButton = new Button(myContext);
et ça ne marcherait pas. Après avoir ajouté le 2ème et le 3ème paramètre, cela fonctionne!Utilisez le code ci-dessous dans votre fichier xml. Utilisez android: background = "# 00000000" pour avoir la couleur transparente.
la source
Vous pouvez utiliser la bibliothèque de support AppCompat pour le bouton sans bordure.
Vous pouvez créer un bouton sans bordure comme ceci:
Vous pouvez créer un bouton coloré sans bordure comme ceci:
la source
Pour une raison quelconque, ni
style="Widget.Holo.Button.Borderless"
niandroid:background="?android:attr/selectableItemBackground"
travaillé pour moi. Pour être plus précis, aWidget.Holo.Button.Borderless
fait le travail sur Android 4.0 mais n'a pas fonctionné sur Android 2.3.3. Ce qui a fonctionné pour moi sur les deux versions étaitandroid:background="@drawable/transparent"
et ce XML dans res / drawable / transparent.xml:Tête simple à travers l'approche du mur.
la source
android:background="?android:attr/dividerVertical"
astuce intéressante .Un excellent diaporama sur la façon d'obtenir l'effet souhaité de Google Nick Butcher (commencez à la diapositive 20). Il utilise l'androïde standard
@attr
pour styliser le bouton et le séparateur.la source
En plus de la réponse du haut, vous pouvez également utiliser des vues avec une couleur d'arrière-plan gris foncé dans une mise en page linéaire comme celle-ci.
Si votre ligne est horizontale, vous voudrez définir la hauteur sur 1dip et la largeur pour correspondre au parent et vice-versa si votre ligne est verticale.
la source
Si vous souhaitez obtenir le même résultat par programme:
(c'est C # mais facilement transposable en Java)
Rencontre
la source
Essayez ce code, pour supprimer l'arrière-plan dessinable (@ drawable / bg) par programme, il suffit de fournir null comme paramètre.
la source