2016-02-14 1 views
1

У меня есть ImageButton с прозрачным изображением в нем. Я изменил цвет фона ImageButton.ImageButton. Как получить стандартное «свечение» efect при нажатии

Когда нажата кнопка ImageButton с цветом по умолчанию, кнопка показывает, что она была нажата «светится» в течение очень короткого времени. Но когда цвет фона изменяется, эффект «свечения» не отображается. Другое поведение не связано с изображением, потому что эффект «свечения» отображается, когда кнопка имеет стандартный «сероватый» цвет.

Как я могу получить эффект «свечения» в цветном изображении?

P.S. Я знаю, как изменить цвет ImageButton на событие click. Но я хочу иметь такой же эффект при использовании серого цвета ImageButton. То же самое (светящиеся не показывает) происходит также с объектом Button.

ответ

0

Вы можете использовать эту библиотеку

RippleView

enter image description here

+0

Я бы предпочел вернуть стандартное поведение. Вы знаете, почему он уходит, а затем меняет цвет фона? – geo

+1

Когда вы меняете цвет фона, стиль по умолчанию больше не работает. –

0

Вы можете использовать ColorStateList определить pressed цвет вашей кнопки.

Для получения дополнительной информации вы должны просмотреть документацию, указанную выше. Вот краткий пример из дока, который охватывает основу: файл

XML сохраняется при Резе/цвета/button_text.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" 
      android:color="#ffff0000"/> <!-- pressed --> 
    <item android:state_focused="true" 
      android:color="#ff0000ff"/> <!-- focused --> 
    <item android:color="#ff000000"/> <!-- default --> 
</selector> 

Этого формат XML будет применяться список цветов для просмотра:

<Button 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/button_text" 
    android:textColor="@color/button_text" /> 

в вашем случае, вы хотите установить android:background, чтобы указать на новый ресурс XML, вместо android:textColor.

Надеюсь, что это поможет.

0

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

Например, в моем XML, как:

<LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@color/custom_color" 
     android:orientation="vertical"> 

     <Button 
      android:id="@+id/button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"/> 
    </LinearLayout> 

и в моем OnCreate:

TypedValue outValue = new TypedValue(); 
getContext().getTheme().resolveAttribute(R.attr.selectableItemBackground, outValue, true); 
Button mButton = (Button) findViewById(R.id.button); 
mButton.setBackgroundResource(outValue.resourceId); 

Сво работает только, если у вас есть только один кнопки в вашем LinearLayout, если вы хотите, чтобы положить туда что-то еще вы можете использовать вид внутри RelativeLayout с теми же параметрами, что и ваша кнопка.

Сообщите мне, если у вас есть другие вопросы!

Смежные вопросы