webBG - програмисти, машинно обучение, javascript, python, php, питам, говорим, публикации

Защо един бутон губи първоначалното си поведение след промяна на цвета си?

Пиша приложение за Android и сега го стилизирам. Използвам персонализирана тема, която е дъщерна на Theme.Holo.Light. Много харесвам Theme.Holo.Light, защото бутоните му имат специален ефект, когато щракнете и го задържите. Като долния бутон на снимката по-долу:

Без кликване: въведете описание на изображението тук

щракнете върху: въведете описание на изображението тук

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

Освен това цветният бутон изглежда по-дебел.


  • мисля, че цветът на вашия ефект и цветът на бутона са еднакви, така че не го виждате. опитайте да промените цвета на вашия бутон на друг и вижте 28.08.2015

Отговори:


1

Това е така, защото бутонът използва селектор за показване на различни цветове/ефекти/чертания въз основа на състоянието на щракването. Можете да разгледате връзката в Ресурс за списък със състояния на цветове .

За да създадете свой собствен, трябва да създадете slecetor cml файл и да го поставите във вашата папка drawables.

Например.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/shape_btn_default_normal_gray" android:state_enabled="true" android:state_pressed="false"/>
    <item android:drawable="@drawable/shape_btn_default_pressed_gray" android:state_pressed="true"/>
    <item android:drawable="@drawable/shape_btn_default_disabled_gray"/>
</selector>

или с цветове

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/dark_green" android:state_enabled="true" android:state_pressed="false"/>
    <item android:drawable="@color/light_green" android:state_pressed="true"/>
    <item android:drawable="@color/gray"/>
</selector>

За да приложите това, трябва да зададете възможност за рисуване на фона във вашето оформление xml по този начин.

<Button
    android:id="@+id/my_btn"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="Some text"
    android:background="@drawable/selector_btn_default_gray"/>
28.08.2015
  • Къде е дефиницията на @drawable/shape_btn_default_normal_gray, @drawable/shape_btn_default_pressed_gray и т.н.? 28.08.2015
  • това беше пример, можете да използвате каквото искате, чертеж, цвят и т.н. 28.08.2015
  • Все пак не изглежда така, че мога да поставя шестнадесетичен цвят 28.08.2015
  • имаш ли файл colors.xml? поставете шестнадесетичния знак във вашите цветове xml файл по този начин <color name="green">#3dc49d</color> 28.08.2015
  • Знам, че мога да направя това, но не мога да го поставя директно там, нали? 28.08.2015
  • не директно в Не мисля, лоша практика, ако можехте, ще направи смяната на всичките ви цветове болка :) 28.08.2015
  • Благодаря ти много! 28.08.2015

  • 2

    Това е „ефектът на вълните“ на материалния дизайн.
    Вие сте определили свой собствен стил за този ефект.
    Връзката по-долу може да ви помогне или можете да потърсите много други отговори в StackOverflow.
    Материален ефект върху бутон с цвят на фона

    28.08.2015

    3

    Не губи поведението си, което можете да видите, след като щракнете върху (във второто ви изображение) бутонът показва същия мащаб като горния...така че по подразбиране фонът е зададен така, че да показва, че е button (като с padding или така) и може да промени, за да покаже ефект oncklick... Така че, когато зададете фона на желанието си на бутон... Необходима е пълна промяна на това, което е на него в момента и след това вие трябва ръчно да зададете onclick ефект..

    28.08.2015
    Нови материали

    За да научите нов език за програмиране, започнете отначало
    Първоначално публикувано на http://www.mberlove.com/blog/a-new-programming-language-starting-over/ Програмистите се гордеят със способността си да усвояват лесно нови умения , разчитайки..

    5 Youtubers на Data Science, които трябва да следвате
    Защото всички можем да се справим с малко продуктивно отлагане Всички сме падали в заешката дупка на Youtube, така че защо да не я направим продуктивна?! Като непрекъснато нарастващ източник..

    Бих казал, че точно това е проблемът с Twitter — това е инструмент на суперпотребител.
    Бих казал, че точно това е проблемът с Twitter — това е инструмент на суперпотребител. По същия начин, по който суперкодерът сочи vim като единствения начин за кодиране, но останалите от нас..

    Основи на Gradio
    Gradio е най-ефективният метод за демонстриране на вашия модел на машинно обучение и разполага с удобен за потребителя онлайн интерфейс, който го прави достъпен от всяко място. Какво прави..

    Илюстрация (GIF) за обяснение на дълбоки конволюционни мрежи (DCNN)
    В света на компютърното зрение най-основният и често срещан алгоритъм за разпознаване на изображения е конволюционната мрежа. С популярността на рамки като tensorflow и pytorch, стана по-лесно да..

    Python Bootcamp — Data Science Day 165
    Python Bootcamp от Giles McMullen-Klein беше абсолютно невероятно. Джайлс има този уникален начин да улови аудиторията си, като същевременно прави съдържанието на курса много интересно...

    Сравняване на модели на машинно обучение в R за прогнозиране на смърт поради сърдечна недостатъчност и диабет
    Част 1: Използвайте машинно обучение за прогнозиране на смъртно събитие поради сърдечна недостатъчност Целта на този анализ е да се сравнят методите за машинно обучение при прогнозиране на..