бутон за Android (Button)

обща информация

Бутон - един от най-често срещаните контролите в програмирането. Наследява от TextView и е базов клас за SompoundButton клас. От CompoundButton клас, от своя страна, наследени елементи като отметката. ToggleButton и RadioButton. В Android бутон използва android.widget.Button клас. Текст върху бутона, разположен на десния бутон да натиснете, за да получите резултат. Една алтернатива той може да послужи ImageButton компонент (android.widget.ImageButton), който се използва вместо текст, изображение.







Студиото е представена от един бутон в раздела Widgets на Бътън компонент. Контрол на размера на шрифта, цвета на текста и други свойства е възможно чрез textAppearance атрибут. която използва стилове на системата. падащия списък от свойства съдържа огромен списък от опции. Можете и ръчно да зададете конкретни индивидуални настройки чрез отделните имоти.

Ако се простират върху бутона по ширината на екрана (Android: layout_width = "match_parent"), също така е препоръчително да се използва атрибут Android: layout_margin (или свързани layout_marginRight и layout_marginLeft), за да тире от краищата на екрана (уебмастъри са запознати с тези условия).

Както бутона е наследник на TextView. той използва много познати атрибути: цвят на текст. textSize и сътр.

Три събитие боравене метод за натискане на един бутон

Ако сложите върху бутона на екрана и ще кликнете върху него, нищо не се случва. Вие трябва да напишете кода, който ще се проведе при натискане. Има няколко начина на работа с натиска бутона.

Първият начин - атрибута OnClick

Сравнително нов метод разработен специално за Android - за да използвате OnClick атрибут (показва се като при кликване върху панела със свойства):

Име за събитието може да бъде избрана произволно, но по-добре е да не се покаже. На следващо място, трябва да се регистрирате в дейността на класна стая ли е измислил името на метода, че ще се справят с пресата. Методът трябва да е отворен (обществени) и един параметър, използвайки Виж обекта. Трябва да се научите пет думи, за да се създаде метод и метода се поставя в един клас (ако все още сте объркани в Java код структура, поставете метод преди последната скоба):

Когато потребителят кликне върху бутона, а след това се нарича метод onMyButtonClick (). което от своя страна генерира изскачащи съобщения.

Моля, имайте предвид, че подобен подход дори няма да трябва да декларира един бутон, чрез проектиране (Button) findViewById (R.id.button1). така че Android себе си ще се разбере какво е това, което. Този метод е приложим не само към бутона, но и на други елементи и намалява броя на реда код.

Този метод няма да работи във фрагменти. Бътън трябва да бъде част от фрагмент на дейност, а не.

Вторият начин - setOnClickListener () метод

А по-традиционен метод в Java - чрез (метод setOnClickListener). , който се вслушва натискане на бутона. Тъй като кодът може да изглежда трудно за начинаещ програмист, се препоръчва да се използват съветите за студио. Ето как ще изглежда. Да предположим, че вече имате бутон на екрана бутон. В кода, можете да го декларират по обичайния начин:

Сега имате работния обект, и след като вътре фигурните скоби на метода OnClick (), можете да напишете кода си. Аз препоръчвам да практикуват и да получите ръка в създаването на детайла. Това не е толкова трудно, и практикуват умения се определя автоматично.

Друга възможност е да се направи код за OnClickListener на отделно място, това е удобно, когато няколко бутона на екрана и този подход ще рационализират кода. Премахване на предишния пример, и започнете да пишете кода от нулата. Принципът е един и същ, малко по-различен ред. В предишния пример, ние веднага регистрирано в метода на слушателя setOnClickListener нов OnClickListener. метода OnClick (). Трябва първо да може да обяви отделен променлива отделно myButtonClickListener:







Имаме готови променлива, а сега, че ще спечелят button.setOnClickListener код. вместо въведете новата OnClickListener готов променлива.

За описание начинаещ може да изглежда хаотична и не е ясно, но е по-добре да се направи тези стъпки сами по себе си, и да се разбере механизма.

Третият начин - интерфейсът OnClickListener

Третият метод е свързан с втория метод, а също традиционен Java. Бутон присвоява манипулатор използва метод setOnClickListener (View.OnClickListener л). т.е. всеки обект с View.OnClickListener интерфейс. Ние можем да се уточни, че в нашия клас активност ще използва View.OnClickListener интерфейс.

Отново изтрие кода от предишния пример. На следващо място, след думите разширява дейността добавя думите реализира OnClickListener. Когато бъдете подканени, не се заблуждавайте. Обикновено там е първият интерфейс за диалог, а вторият ни искат View.OnClickListener.

Името на вашия клас, за да се подчертае, вълнообразна червена линия, щракнете върху думата публично и да чакат за червената светлина, изберете Изпълнение методи. Покаже диалогов прозорец с избрания метод OnClick. Изберете го и детайла за натискане се появи в кода.

Методът не се изпълнява в отделна обект манипулатор и активност. който ще действа като манипулатор. В onCreate () метод присвоите бутон манипулатор. Това ще бъде обектът това. т.е. текущия обект на нашата дейност.

На първо място, този метод също изглежда сложно и объркващо за вас. С течение на времето и опита идва разбирането необходимо.

Лично аз препоръчвам ви да използвате първия метод е най-лесният и най-интуитивна. С помощта на втория и третия метод ще ви даде представа за това как да напишете товарачи за други събития, както и един бутон може да има и други събития. Например, освен обичайните натискане там продължително натискане на бутона (дълго натискане). Един такъв пример е начинът на докосване дадох в края на тази статия.

За да научите как да се справят с едно натискане на бутон Написал съм отделен бутон статия Click / Counter пропее. Бътън също е често да се намери в много примери на сайта. За работа с продължително натискане може да се намери в една статия за ImageButton.

Плодете се и множете - това е за котки, но не и за бутоните

Когато имате един бутон в един прозорец, а след това ще има един метод, два бутона - два метода и така нататък. Ако имате няколко копчета, че не е необходимо за всеки да се определи метод, можете да направите едно, а в начина на отделяне на идентификационния код на един бутон. Ако се вгледате в кода в предишните примери, можете да видите, че параметърът метод е наличен View. което позволява да се определи, за един бутон е част от код:

Да предположим, че имате три бутона:

Както можете да видите, ние сме намалили обема на кода. Сега имаме един манипулатор OnClick (). която определя действието на три бутона.

Направи Няма бутон

Понякога трябва да се предоставят на бутона, и да го активирате при определени условия. XML може да се направи чрез бутона не е наличен (не е подходящ атрибут). Това може да стане чрез програмно setEnabled метод ():

Като алтернатива можете да помислите за атрибут Android: кликване. което ще даде възможност на бутона не отговаря на допир, но остава нормално в този вид на бутон.

Направете бутон плосък

Standard бутон на екрана изглежда изпъкнало. Но в някои случаи е желателно да се използва плосък интерфейс. По-рано, за тези цели могат да бъдат използвани TextView с работа кликвания. Но сега препоръчваме използването на специален стил borderlessButtonStyle:

Бутонът ще запази обичайния си поведение, ще се промени цвета си, когато бъде натиснат, и т.н.

Добавяне на друг стил с появата на Material Design, например, стил = "@ стил / Widget.AppCompat.Button.Borderless". който е предпочитаният вариант. Опитайте и стил = "@ стил / Widget.AppCompat.Button.Borderless.Colored"

Докосни ме нежно

Ако внимателно наблюдавате поведението на бутона, ще видите, че кодът се задейства в момента, когато се пусне на лапата си, съжалявам, пръста си от бутона. За нормални приложения е съвсем нормално, и този подход може да е твърде бавен за скорост игри. В такива случаи е по-добре да се справят с положението, без докосване на един бутон, а с негово докосване. В Android, има съответен OnTouchListener () слушател:

В onTouch () метод има параметър MotionEvent. което позволява по-прецизно определяне на сензорния екран. При настъпване на събитието, когато потребителят е докосване на екрана, след което тя ще се побере ACTION_DOWN постоянна. Съответно, ако потребителят ще премахне пръста си, трябва да използвате постоянно ACTION_UP. Следователно, можете да се разглежда като едно кликване на един бутон комбинация от две събития - на пипане и освобождаване.

За съжаление, няма метод в Android Pat днес. Котките са недоволни.

Вземи текста от бутона

Вдъхновен от въпроса от форума. Задачата - да се получи текста на бутона в метода OnClick (). Методът има параметър от тип View. който не разполага с метод getText (). За да направите това, въведете водят до тип бутон.

Ако имате няколко копчета, свързани с метода OnClick (). След това кликнете върху бутона натиснат ще покаже текста.

Допълнителна информация