Button should be borderless android studio

Why “Buttons in button bars should be borderless” in Android API Level 15?

Posted by: admin January 4, 2018 Leave a comment

I’m developing an application for Android and I recently changed the API level target from 8 to 15, and now Eclipse is warning me when the Buttons are inside Linear Layouts or Table Rows .

The same doesn’t happen when the Button is in a Relative Layout .

The warning says:

Buttons in button bars should be borderless; use
style=”?android:attr/buttonBarButtonStyle” (and
?android:attr/buttonBarStyle on the parent)

I can get rid of the warning by following the suggestion or even by suppressing it, but I’m interested to know why this now? What’s wrong with bordered buttons?

The borderless buttons are for cohesiveness of design throughout the android platform. It’s recommended you follow the guidelines so that the user feels that your app is native and does not stick out like a sore thumb, but there are many cases where it just doesn’t make sense, like if it makes your app look unprofessional. If that is the case, you may want to turn off the warning.

To turn off the warning, go to the project properties -> Android Lint Preferences. Search for “border” or “ButtonStyle” and change the severity to ignore on the bottom right.

You can also do this in Eclipse preferences for all projects.

For Android Studio Users:

File -> Settings -> Editor -> Inspections -> Android Lint. Search for “borderless” and uncheck or change the severity.

In my case adding that style to ALL buttons which were ONLY elements in some linerar layout gave buttons without any borders. After adding style also to the layout I got buttons separated with small edges exsacly like in some epements of my (4.1.2) android interface eg. like in dialog possitive/negative buttons. It worked correctly. Standard Holo buttons are ugly but with that styles they look “professional”;-)

android – How do I display a CalendarView in an AlertDialog?

Questions: I’m trying to display the CalendarView in an Alert Dialog, but all that shows up is the month/year and the days of the week. These are the contents of the layout file:

How do I convert a PSD design to Android xml?

Questions: Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers. Want to improve this question? Update the question so it’s on-topic for Stack Over.

Источник

Как создать стандартные кнопки Borderless (как в упомянутом руководстве по проектированию)?

Я просто проверял руководство по дизайну и задавался вопросом о кнопках без рамки. Я очнулся и попытался найти в источнике, но не мог собрать его сам. Является ли это обычным виджетами Button, но вы добавляете собственный стиль (Android по умолчанию)? Как сделать эти кнопки без полей (конечно, вы можете установить фон пустым, но тогда у меня нет разделителя)?

Здесь ссылки на руководящие принципы проектирования:

Чтобы устранить некоторую путаницу:

Это делается в 2 этапа: установка атрибута фона кнопки для android: attr / selectableItemBackground создает вам кнопку с обратной связью, но без фона.

Линия, чтобы разделить кнопку без полей от остальной части вашего макета, сделана с представлением с фоном android: attr / dividerVertical

Для лучшего понимания здесь приведен макет для комбинации кнопок OK / Cancel без полей внизу экрана (как на рисунке справа).

Просто добавьте в свой тег Button следующий атрибут стиля:

Затем вы можете добавить разделители, как в ответе Карла .

Читайте также:  Все модели андроидов китай

Поздний ответ, но много просмотров. Поскольку API

Пусть ваш контейнер имеет желаемый цвет (может быть прозрачным). Затем дайте вашим кнопкам селектор с прозрачным цветом по умолчанию, а также некоторый цвет при нажатии. Таким образом, у вас будет прозрачная кнопка, но при нажатии будет изменен цвет (например, голо). Вы также можете добавить анимацию (например, holo’s). Селектор должен выглядеть примерно так:

И кнопка должна иметь android:background=»@drawable/selector_transparent_button»

PS: пусть у вас есть разделители ( android:divider=’@android:drawable/. для API

PS [Newbies]: вы должны определить эти цвета в значениях / colors.xml

Для тех, кто хочет кнопки без полей, но все же анимированные при нажатии. Добавьте это в кнопку.

Если вам нужен разделитель / линия между ними. Добавьте это в линейную компоновку.

Для стиля материала добавьте style=»@style/Widget.AppCompat.Button.Borderless» при использовании библиотеки AppCompat.

Из исходного источника iosched я придумал этот класс ButtonBar :

Это будет LinearLayout , в который LinearLayout «ОК» и «Отмена», и будет обрабатывать их в соответствующем порядке. Затем поместите это в макет, который вы хотите, кнопки в:

Это дает вам вид диалога с кнопками без полей. Эти атрибуты можно найти в res в рамках. buttonBarStyle делает вертикальный делитель и дополнение. buttonBarButtonStyle задается как тема buttonBarButtonStyle для Holo, но я считаю, что это должен быть самый надежный способ отображать его, поскольку инфраструктура хочет отобразить его.

Изучите атрибуты темы buttonBarStyle , buttonBarButtonStyle и buttonBarButtonStyle .

Вы также можете сделать кнопки без полей через код:

Для тех, кто хочет создать кнопку без полей программно для API> = 8

Еще одно решение, которое должно работать как на старой, так и на новой платформе Android, – это использовать

Атрибут для представления Button. Но после добавления кнопки выше строки не будет отображаться обратная связь касания.

Чтобы обеспечить обратную связь, добавьте следующий код в класс Activity

Его работа прекрасна для меня.

Для тех, кто все еще ищет:

Наследуйте свой стиль для кнопок Holo:

И для кнопок Holo без полей:

Используйте приведенный ниже код в вашем XML-файле. Используйте android: background = «# 00000000», чтобы иметь прозрачный цвет.

Вы можете использовать библиотеку поддержки AppCompat для кнопки Borderless.

Вы можете сделать Borderless Button следующим образом:

Вы можете сделать Borderless Colored Button следующим образом:

По какой-то причине ни для меня не работал ни style=»Widget.Holo.Button.Borderless» ни android:background=»?android:attr/selectableItemBackground» . Чтобы быть точнее, Widget.Holo.Button.Borderless выполнил эту работу на Android 4.0, но не работал на Android 2.3.3. Какая уловка для меня в обеих версиях была android:background=»@drawable/transparent» и этот XML в res / drawable / transparent.xml:

Простая голова через стену подходит.

Отличное слайд-шоу о том, как добиться желаемого эффекта от Googles Nick Butcher (начало с слайда 20). Он использует стандартный андроид @attr для @attr кнопки и разделителя.

Добавляя к верхнему ответу, вы также можете использовать представления с темно-серым цветом фона в линейном макете.

Если ваша линия горизонтальная, вы хотите установить высоту в 1dip и ширину в соответствии с родительским и наоборот, если ваша линия вертикальна.

Если вы хотите добиться того же программно:

Источник

Google Android — это несложно

Добро пожаловать на форум сайта

Помогите разобраться с ошибками

Помогите разобраться с ошибками

Сообщение kabadaster » 19 май 2014, 13:19

Доброго всем здоровячка! Помогите, пожалуйста, найти косяк. Обучаюсь нынче программированию под Андроид при помощи одного учебника и там значит в первом уроке пишется вот такое приложение:

android:layout_width=»match_parent»
android:layout_height=»match_parent»
android:gravity=»center»
android:orientation=»vertical» >

android:layout_width=»wrap_content»
android:layout_height=»wrap_content»
android:padding=»24dp»
android:text=»@string/question_text»/>

android:layout_width=»wrap_content»
android:layout_height=»wrap_content»
android:orientation=»horizontal» >

Написанное выше полностью совпадает с написанным в книге, но у них типа все хорошо, а у меня напротив Button рисуется желтый треугольник, который гласит «Buttons in button bars should be borderless; use style=»?android:attr/buttonBarButtonStyle» (and ?android:attr/buttonBarStyle on the
parent)». ЧТО ЭТО? о_0 Гугль выдал мне нечто непонятное, поэтому решил обратиться к более опытным специалистам. Ткните меня носом, пожалуйста

Re: Помогите разобраться с ошибками

Сообщение Mikhail_dev » 19 май 2014, 15:31

Источник

Button (Кнопка)

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

Кнопка — один из самых распространенных элементов управления в программировании. Наследуется от TextView и является базовым классом для класса СompoundButton. От класса CompoundButton в свою очередь наследуются такие элементы как CheckBox, ToggleButton и RadioButton. В Android для кнопки используется класс android.widget.Button. На кнопке располагается текст и на кнопку нужно нажать, чтобы получить результат. Альтернативой ей может служить компонент ImageButton (android.widget.ImageButton), у которого вместо текста используется изображение.

Читайте также:  Почему происходит сбой загрузки андроид

В студии кнопка представлена компонентом Button в разделе Widgets. Управлять размером шрифта, цветом текста и другими свойствами можно через атрибут textAppearance, который задействует системные стили. Выпадающий список данного свойства содержит огромный перечень вариантов. Также вы можете вручную задать конкретные индивидуальные настройки через отдельные свойства.

Если вы растягиваете кнопку по всей ширине экрана (android:layout_width=»match_parent»), то дополнительно рекомендую использовать атрибут android:layout_margin (или родственные ему layout_marginRight и layout_marginLeft) для создания отступов от краев экрана (веб-мастера знакомы с этими терминами).

Так как кнопка является наследником TextView, то использует многие знакомые атрибуты: textColor, textSize и др.

Три способа обработки событий нажатий на кнопку

Если вы разместили на экране кнопку и будете нажимать на неё, то ничего не произойдёт. Необходимо написать код, который будет выполняться при нажатии. Существует несколько способов обработки нажатий на кнопку.

Первый способ — атрибут onClick

Относительно новый способ, специально разработанный для Android — использовать атрибут onClick (на панели свойств отображается как On Click):

Имя для события можно выбрать произвольное, но лучше не выпендриваться. Далее нужно прописать в классе активности придуманное вами имя метода, который будет обрабатывать нажатие. Метод должен быть открытым (public) и с одним параметром, использующим объект View. Вам нужно выучить пять слов для создания метода, а сам метод поместить в класс (если вы ещё путаетесь в структуре Java-кода, то вставьте метод перед последней фигурной скобкой):

Когда пользователь нажимает на кнопку, то вызывается метод onMyButtonClick(), который в свою очередь генерирует всплывающее сообщение.

Обратите внимание, что при подобном подходе вам не придётся даже объявлять кнопку через конструкцию (Button)findViewById(R.id.button1), так как Android сама поймёт, что к чему. Данный способ применим не только к кнопке, но и к другим элементам и позволяет сократить количество строк кода.

Второй способ — метод setOnClickListener()

Более традиционный способ в Java — через метод setOnClickListener(), который прослушивает нажатия на кнопку. Так как для начинающего программиста код может показаться сложным, то рекомендуется использовать подсказки студии. Вот как это будет выглядеть. Предположим, у вас на экране уже есть кнопка button. В коде вы объявляете её обычным способом:

Следующий шаг — написание метода для нажатия. Напечатайте имя элемента и поставьте точку button. — среда разработки покажет вам список доступных выражений для продолжения кода. Вы можете вручную просмотреть и выбрать нужный вариант, а можно продолжать набирать символы, чтобы ускорить процесс. Так как с нажатиями кнопок вам часто придётся работать, то запомните название его метода (хотя бы первые несколько символов) — набрав четыре символа (seto), вы увидите один оставшийся вариант, дальше можно сразу нажать клавишу Enter, не набирая оставшиеся символы. У вас появится строка такого вида:

Курсор будет находиться внутри скобок и появится подсказка OnClickListener l. Начинайте набирать new OnClickListener. Здесь также не обязательно набирать имя полностью. Набрав слово Oncl, вы увидете нужный вариант и снова нажимайте Enter. В результате вы получите готовую заготовку для обработки нажатия кнопки:

Теперь у вас есть рабочая заготовка и сразу внутри фигурных скобок метода onClick() вы можете писать свой код. Рекомендую потренироваться и набить руку в создании заготовки. Это не так сложно, и с практикой навык закрепится автоматически.

Как вариант, можно вынести код для OnClickListener в отдельное место, это удобно, когда кнопок на экране несколько и такой подход позволит упорядочить код. Удалите предыдущий пример и начните писать код заново. Принцип такой же, немного меняется порядок. В предыдущем примере мы сразу прописали в методе setOnClickListener слушателя new OnClickListener. с методом onClick(). Можно сначала отдельно объявить отдельную переменную myButtonClickListener:

Во время набора активно используйте подсказки через Ctrl+Space. Набрали несколько символов у первого слова и нажимайте эту комбинацию, набрали после слова new несколько символов и снова нажимайте указанную комбинацию — заготовка будет создана за несколько секунд, а вы избежите возможных опечаток.

У нас есть готовая переменная, и теперь, когда вы будете набирать код button.setOnClickListener, то вместо new OnClickListener впишите готовую переменную.

Для новичка описание может показаться сумбурным и не понятным, но лучше самостоятельно проделать эти операции и понять механизм.

Третий способ — интерфейс OnClickListener

Третий способ является родственным второму способу и также является традиционным для Java. Кнопка присваивает себе обработчика с помощью метода setOnClickListener (View.OnClickListener l), т.е. подойдет любой объект с интерфейсом View.OnClickListener. Мы можем указать, что наш класс Activity будет использовать интерфейс View.OnClickListener.

Читайте также:  Настройки lte для андроид

Опять стираем код от предыдущего примера. Далее после слов extends Activity дописываем слова implements OnClickListener. При появлении подсказки не ошибитесь. Обычно первым идёт интерфейс для диалогов, а вторым нужный нам View.OnClickListener.

Название вашего класса будет подчёркнуто волнистой красной чертой, щёлкните слово public и дождитесь появления красной лампочки, выберите вариант Implement methods. Появится диалоговое окно с выделенным методом onClick. Выбираем его и в коде появится заготовка для нажатия кнопки.

Метод будет реализован не в отдельном объекте-обработчике, а в Activity, который и будет выступать обработчиком. В методе onCreate() присвоим обработчик кнопке. Это будет объект this, т.е. текущий объект нашей активности.

На первых порах такой способ также покажется вам сложным и непонятным. Со временем и опытом понимание обязательно придёт.

Лично я рекомендую вам использовать первый способ, как самый простой и понятный. Использование второго и третьего способа дадут вам представление, как писать обработчики для других событий, так как кнопка может иметь и другие события. Например, кроме обычного нажатия существует долгое нажатие на кнопку (long click). Один из таких примеров с методом касания я привёл в конце этой статьи.

О том, как обрабатывать щелчки кнопки я написал отдельную статью Щелчок кнопки/Счетчик ворон. Также кнопки часто будут встречаться во многих примерах на сайте. Про обработку длительный нажатий можно прочитать в статье, посвященной ImageButton.

Плодитесь и размножайтесь — это про кошек, а не про кнопки

Когда у вас одна кнопка в окне, то у вас будет один метод, две кнопки — два метода и так далее. Если у вас несколько кнопок, то не обязательно для каждой прописывать свой метод, можно обойтись и одним, а уже в самом методе разделять код по идентификатору кнопки. Если вы посмотрите на код в предыдущих примерах, то увидите, что в методе присутствует параметр View, который и позволяет определить, для какой кнопки предназначен кусок кода:

Предположим, у вас есть три кнопки:

Как видите, мы сократили количество кода. Теперь у нас один обработчик onClick(), в котором прописаны действия для трёх кнопок.

Сделать кнопку недоступной

Иногда нужно сделать кнопку недоступной и активировать её при определённых условиях. Через XML нельзя сделать кнопку недоступной (нет подходящего атрибута). Это можно сделать программно через метод setEnabled():

Как альтернативу можете рассмотреть атрибут android:clickable, который позволит кнопке не реагировать на касания, но при этом вид кнопки останется обычным.

Сделать кнопку плоской

Стандартная кнопка на экране выглядит выпуклой. Но в некоторых случаях желательно использовать плоский интерфейс. Раньше для этих целей можно было использовать TextView с обработкой щелчка. Но теперь рекомендуют использовать специальный стиль borderlessButtonStyle:

Кнопка сохранит своё привычное поведение, будет менять свой цвет при нажатии и т.д.

С появлением Material Design добавились другие стили, например, style=»@style/Widget.AppCompat.Button.Borderless», который является предпочтительным вариантом. Попробуйте также style=»@style/Widget.AppCompat.Button.Borderless.Colored»

Коснись меня нежно

Если вы внимательно понаблюдаете за поведением кнопки, то увидите, что код срабатывает в тот момент, когда вы отпускаете свою лапу, извините, палец с кнопки. Для обычных приложений это вполне нормально, а для игр на скорость такой подход может оказаться слишком медленным. В подобных случаях лучше обрабатывать ситуацию не с нажатием кнопки, а с его касанием. В Android есть соответствующий слушатель OnTouchListener():

У метода onTouch() есть параметр MotionEvent, позволяющий более тонко определять касания экрана. Если произойдет событие, когда пользователь коснулся экрана, то ему будет соответствовать константа ACTION_DOWN. Соответственно, если пользователь уберёт палец, то нужно использовать константу ACTION_UP. Таким образом, можете расценивать щелчок кнопки как комбинацию двух событий — касания и отпускания.

Получить текст с кнопки

Навеяно вопросом с форума. Задача — получить текст кнопки в методе onClick(). У метода есть параметр типа View, у которого нет метода getText(). Для этого нужно привести тип к типу Button.

Если у вас несколько кнопок привязаны к методу onClick(), то щелчок покажет текст нажатой кнопки.

Дополнительное чтение

SwipeButton — кнопка с поддержкой свайпа

Библиотеки

dmytrodanylyk/circular-progress-button — ещё один вариант кнопок с индикатором прогресса.

Источник

Оцените статью