dzięki. + 1 za to. Po zapisaniu go w folderze wysuwnym jako plik xml. Jak możemy go użyć?
Android Killer
1
@AndroidPower możesz używać z R.drawable.FILE_NAME
slayton
2
Gdzie idzie ten kod, w kodzie .axml znaczników przycisku? Czy wchodzi w plik typu styles.xml?
TheJerm
Użyłem tylko obrysu (i uczyniłem go białym), aby obrysować biały przycisk. Działa świetnie z 4.4, ale w 4.0.3 przycisk robi się czarny - jakieś pomysły dlaczego?
Kibi
1
@ Kibi przepraszam, że ktoś zredagował moją odpowiedź i udzielił niepoprawnej porady. Zmieniłem to, ale jestem zszokowany, że ktoś może edytować zaakceptowaną odpowiedź i zmienić użyteczność.
Pedantyczny
57
• Android Official Solution
Od czasu wprowadzenia Android Design Support v28 łatwo można utworzyć graniczny przycisk za pomocą MaterialButton. Ta klasa dostarcza zaktualizowane style materiałów dla przycisku w konstruktorze. Używanie app:strokeColori app:strokeWidthmożna utworzyć obramowanie niestandardowe w następujący sposób:
<com.google.android.material.button.MaterialButtonstyle="@style/Widget.AppCompat.Button.Borderless"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="UNFILLED MATERIAL BUTTON"android:textColor="@color/green"android:textSize="15sp"app:backgroundTint="@android:color/transparent"app:cornerRadius="8dp"app:rippleColor="#33AAAAAA"app:strokeColor="@color/green"app:strokeWidth="2dp"/>
<android.support.design.button.MaterialButtonstyle="@style/Widget.AppCompat.Button.Borderless"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="UNFILLED MATERIAL BUTTON"android:textColor="@color/green"android:textSize="15sp"app:backgroundTint="@android:color/transparent"app:cornerRadius="8dp"app:rippleColor="#33AAAAAA"app:strokeColor="@color/green"app:strokeWidth="2dp"/>
Widzę, że w przycisku XML zadeklarowano textColor i textSize. Co sugerujesz, jeśli ktoś ma już styl zdefiniowany dla textColor i textSize, a teraz chce go dodać style="@style/Widget.AppCompat.Button.Borderless"?
Jak wspomniałeś, możliwe jest zdefiniowanie stylu, który dziedziczy po stylu bez obramowania, a następnie dodanie preferowanych atrybutów zgodnie ze stylem podstawowym.
aminografia
Nieco OT, ale jaka jest interesująca czwarta ikona na pasku akcji u dołu GIF-a? (Wygląda też na to, że GIF został
pobrany
1
Może się mylę, ale dla mnie w • Niewypełnionym granicznym przycisku, musiałem zmienić aplikację: backgroundTint = "@ color / transparent" na app: backgroundTint = "@ android: color / transparent"
xarly
37
Utwórz button_border.xmlplik w folderze do rysowania.
Jeśli przycisk nie wymaga przezroczystego tła, możesz stworzyć iluzję ramki za pomocą układu ramki. Po prostu dostosuj atrybut „padding” FrameLayout, aby zmienić grubość ramki.
<FrameLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="1sp"android:background="#000000"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Your text goes here"android:background="@color/white"android:textColor="@color/black"android:padding="10sp"/></FrameLayout>
Nie jestem pewien, czy pliki XML kształtu mają dynamicznie edytowalne kolory obramowania. Ale wiem, że dzięki temu rozwiązaniu możesz dynamicznie zmieniać kolor obramowania, ustawiając tło FrameLayout.
GradientDrawable gd1 =newGradientDrawable();
gd1.setColor(0xFFF43F10);// Changes this drawbale to use a single color instead of a gradient
gd1.setCornerRadius(5);
gd1.setStroke(1,0xFFF43F10);
cancelskill.setBackgroundDrawable(gd1);
cancelskill.setOnClickListener(newView.OnClickListener(){@Overridepublicvoid onClick(View v){
cancelskill.setBackgroundColor(Color.parseColor("#ffffff"));
cancelskill.setTextColor(Color.parseColor("#f43f10"));GradientDrawable gd =newGradientDrawable();
gd.setColor(0xFFFFFFFF);// Changes this drawbale to use a single color instead of a gradient
gd.setCornerRadius(5);
gd.setStroke(1,0xFFF43F10);
cancelskill.setBackgroundDrawable(gd);
finish();}});
Wiem, że spóźnia się o rok, ale możesz także utworzyć obraz z 9 ścieżkami. Istnieje narzędzie dostarczane z zestawem SDK systemu Android, które pomaga w tworzeniu takiego obrazu Zobacz ten link: http://developer.android.com/tools/help/draw9patch .html
Odpowiedzi:
Krok 1: Utwórz plik o nazwie: my_button_bg.xml
Krok 2: Umieść ten plik w res / drawables.xml
Krok 3: Wstaw poniższy kod
Krok 4: Użyj kodu „android: background =" @ drawable / my_button_bg ”w razie potrzeby, np. Poniżej:
źródło
•
Android Official Solution
Od czasu wprowadzenia Android Design Support v28 łatwo można utworzyć graniczny przycisk za pomocą
MaterialButton
. Ta klasa dostarcza zaktualizowane style materiałów dla przycisku w konstruktorze. Używanieapp:strokeColor
iapp:strokeWidth
można utworzyć obramowanie niestandardowe w następujący sposób:1. Gdy używasz
androidx
:build.gradle
• Graniczny przycisk:
• Niewypełniony przycisk graniczny:
2. Gdy używasz
appcompat
:build.gradle
style.xml
Upewnij się, że motyw aplikacji dziedziczy
Theme.MaterialComponents
zamiastTheme.AppCompat
.• Graniczny przycisk:
• Niewypełniony przycisk graniczny:
Wynik wizualny
źródło
style="@style/Widget.AppCompat.Button.Borderless"
?Utwórz
button_border.xml
plik w folderze do rysowania.res / drawable / button_border.xml
I dodaj przycisk do układu aktywności XML i ustaw tło
android:background="@drawable/button_border"
.źródło
utwórz drawable / button_green.xml:
i wskazać to jako
@drawable/button_green
:źródło
Zajrzyj tutaj, aby utworzyć rysowany kształt http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
Po wykonaniu tej czynności w pliku XML zestawu przycisków
android:background="@drawable/your_button_border"
źródło
Jeśli przycisk nie wymaga przezroczystego tła, możesz stworzyć iluzję ramki za pomocą układu ramki. Po prostu dostosuj atrybut „padding” FrameLayout, aby zmienić grubość ramki.
Nie jestem pewien, czy pliki XML kształtu mają dynamicznie edytowalne kolory obramowania. Ale wiem, że dzięki temu rozwiązaniu możesz dynamicznie zmieniać kolor obramowania, ustawiając tło FrameLayout.
źródło
W twoim układzie XML:
W folderze do rysowania utwórz plik dla stylu obramowania przycisku:
A w twojej działalności:
źródło
Wiem, że spóźnia się o rok, ale możesz także utworzyć obraz z 9 ścieżkami. Istnieje narzędzie dostarczane z zestawem SDK systemu Android, które pomaga w tworzeniu takiego obrazu Zobacz ten link: http://developer.android.com/tools/help/draw9patch .html
PS: obraz można również skalować w nieskończoność
źródło