Lag en tilpasset avkrysningsrute i Android-appen din

Som alle widgets som følger med Android UI-settet, kan standard avmerkingsboksen tilpasses - du kan kontrollere farger, oppførsel og til og med formen. Tilnærmingen bør være kjent hvis du har gjort noen brukergrensesnitt med flatt plattformen: legg til de grafiske ressursene for de avkryssede og ikke-avmerkede tilstandene, opprett en XML-velger og tildel velgeren din til avkrysningsruten i oppsettet.

Bortsett fra forrige uke da jeg faktisk trengte en tilpasset avkrysningsrute i et program jeg gjorde for en klient, så det ikke ut til å fungere. (Hater du ikke når det skjer?) Trykket på tid, dobbelt og trippel sjekket jeg min statlige velger og alt virket kopasetisk. Noen dager hater jeg bare datamaskiner!

Etter omtrent en times tid med å trekke håret mitt ut, fant jeg feilen i måtene mine. Jeg hadde antatt at den tilpassede velgeren, som alle de andre widgetene jeg har jobbet med på plattformen, ble tilordnet bakgrunnsegenskapen. Når du arbeider med en avkrysningsrute, blir en tilpasset valg faktisk tilordnet knappenegenskapen.

Denne opplæringen er en rask gjennomføring for å lage en tilpasset avkrysningsrute. Du kan følge med trinn for trinn, eller laste ned og importere kildekoden.

1. Åpne Eclipse og start et nytt Android-prosjekt. Målrette Android 1.6 eller nyere. Sørg for å gi nytt navn til oppstartsaktiviteten til Main.java.

2. Lag en mappe som heter / xml i / res katalogen.

3. Legg til tre XML-baserte ressurser i / res / xml-mappen, to som representerer tegningskoden for selve avkrysningsruten og en tredjedel som er statusvelgeren.

 checked.xml 

"1.0" encoding = "UTF-8" ?>

http://schemas.android.com/apk/res/android

android: shape = "rektangel" >

"# ffff0000" android: endColor = "# ff000000" android: vinkel = "270" />

"4px" android: color = "# ffc0c0c0" />

"20dp" android: width = "20dp" />

 Unchecked.xml 

"1.0" encoding = "UTF-8" ?>

"Http://schemas.android.com/apk/res/android"

android: shape = "rektangel" >

"# ff585858" android: endColor = "# ff000000" android: vinkel = "270" />

"4px" android: color = "# ffc0c0c0" />

"20dp" android: width = "20dp" />

custom_checkbox.xml

"1.0" encoding = "utf-8" ?>

"http://schemas.android.com/apk/res/android">

"ekte"

android: drawable = "@ xml / checket" />

"ekte"

android: drawable = "@ xml / checket" />

"@ xml / unchecked" />

4. Definer denne aktivitetens layout i / res / layout-mappen. Oppsettet har en smule langt, men det er ikke noe mer enn en serie horisontale og vertikale oppsett som inneholder et par avmerkingsbokser og etiketter som skal brukes sammen med avmerkingsboksene. I main.xml vil du ikke gå glipp av tildelingen til den egendefinerte avmerkingsboksen. Det er her sunn fornuft og erfaring vil bite deg hvis du ikke er forsiktig.

 main.xml 

"1.0" encoding = "utf-8" ?>

"Http://schemas.android.com/apk/res/android"

android: layout_width = "fill_parent"

android: layout_height = "fill_parent"

android: orientering = "vertikal" >

android: layout_width = "fill_parent"

android: layout_height = "wrap_content"

android: textSize = "20dip"

android: gravitasjon = "sentrum"

android: polstring = "10dip"

android: text = "Sjekk det!" />

android: layout_width = "fill_parent"

android: layout_height = "wrap_content"

android: textSize = "16dip"

android: gravitasjon = "sentrum"

android: polstring = "10dip"

android: text = "Her er en avkrysningsrute ..." />

android: layout_width = "fill_parent"

android: layout_height = "wrap_content"

android: gravitasjon = "sentrum"

android: orientering = "horisontal" >

android: id = "@ + id / avkrysningsboks1"

android: layout_width = "wrap_content"

android: layout_height = "wrap_content"

android: layout_gravity = "sentrum"

android: button = "@ xml / custom_checkbox" />

android: id = "@ + id / textview1"

android: layout_width = "wrap_content"

android: layout_height = "wrap_content"

android: textSize = "14dip"

android: gravitasjon = "sentrum"

android: polstring = "10dip"

android: text = "(ikke avkrysset)" />

android: layout_width = "fill_parent"

android: layout_height = "wrap_content"

android: textSize = "16dip"

android: gravitasjon = "sentrum"

android: polstring = "10dip"

android: text = "Og her er en annen ..." />

android: layout_width = "fill_parent"

android: layout_height = "wrap_content"

android: gravitasjon = "sentrum"

android: orientering = "horisontal" >

android: id = "@ + id / avkrysningsboks2"

android: layout_width = "wrap_content"

android: layout_height = "wrap_content"

android: layout_gravity = "sentrum"

android: button = "@ xml / custom_checkbox" />

android: id = "@ + id / textview2"

android: layout_width = "wrap_content"

android: layout_height = "wrap_content"

android: textSize = "14dip"

android: gravitasjon = "sentrum"

android: polstring = "10dip"

android: text = "(ikke avkrysset)" />

5. Implementere vår Main.java-fil i / src-katalogen. Den tunge løftingen gjøres i XML-filene våre, så vi må ganske enkelt koble til klikkbehandlerne og oppdatere tekstetikettene når et klikk skjer.

 Main.java- pakke com.authorwjf.checkit; 
 import android.app.Aktivitet; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.CheckBox; import android.widget.TextView; 
 public class Main utvider aktivitetsredskaper OnClickListener { 

/ ** Ringes når aktiviteten først opprettes. * /

@Overstyring

public void onCreate (Bundle savedInstanceState) { super .onCreate (savedInstanceState);

setContentView (R.layout. main );

findViewById (R.id. avkrysningsrute1 ) .setOnClickListener ( dette ); findViewById (R.id. avkrysningsboks2 ) .setOnClickListener ( dette ); }
 @Override offentlig tomrom onClick (Vis v) { 

TextView-tv;

if (v.getId () == R.id. avkrysningsrute1 ) {

tv = (TextView) findViewById (R.id. textview1 );

} annet {

tv = (TextView) findViewById (R.id. textview2 );

}

if (((CheckBox) v) .is sjekket ()) {

tv.setText ( "(merket)");

} annet {

tv.setText ( "(ikke merket)");

}

}

}
Der har du det - en helt tilpasset avkrysningsrute ( figur A ). Husk når du styler av i en avkrysningsrute at det er knappen og ikke bakgrunnsegenskapen, og alt annet skal være jevn seiling. Figur A

© Copyright 2020 | mobilegn.com