2012-04-09 2 views
1

в моем текущем проекте Я создаю приложение с API 10, которое должно выглядеть как приложение ICS. Поскольку мой GUI не очень сложный, я могу создать все это вручную, но у меня есть некоторые проблемы с состояниями кнопок.Сложные пользовательские кнопки в Android

Я гугл много и не нашел ничего, что бы работать для меня, так что я был бы признателен за любую помощь;)

Я разработал панель действий с Google ICS иконками. Когда, например, кто-то касается значка поиска-лупы, который имеет обложку 8dp вокруг него, цвет фона должен меняться до определенного значения цвета-цвета.

Итак, теперь вы можете предложить, вероятно, селектор. Но мой случай: у меня есть icon-drawable, который имеет background-color, который я хочу изменить. Я не хочу менять значок, поэтому, поскольку я не могу изменить цвет фона из селектора-xml, это не сработает. (я думал, что могу установить несколько drawable-xml с моими статическими цветами bg, чтобы я мог ссылаться на один селектор на те разные цветные значки, но так как у draw-drawable-xml не может быть источник и bitmap-drawable-xml . не может иметь цвета фона, это не гуманный)

Если я пытаюсь изменить цвет фона в моем OnClick-слушателе (также пытался onTouch) с:

ImageButton searchIcon = (ImageButton) findViewById(R.id.upper_actionbar_icon_search); 
      searchIcon.setBackgroundColor(R.color.android_ics_blue_light); 

Икона получает темно-серый Б.Г. цвет. Это справедливо и для любого другого цвета, если ничего не лежит поверх ImageButton. Я также попробовал ImageView.

Так может кто-нибудь объяснить мои просьбы, как, черт возьми, я могу определить выделенное цветное изображение bg без каких-либо хаков (изображение по умолчанию, которое лежит над значком и установлено видимым onclick). Большое спасибо!

+0

Вы пробовали [actionbarsherlock] (http://actionbarsherlock.com/)? – Renard

+0

Спасибо за это, но я все разработал все это так, как он выглядит великолепно, и я не хочу повторять все, только для этих глупых бликов. – ruffy

ответ

2

Хорошо, это просто.

Написать себе рисуют селектор, который выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?> 

<item android:state_selected="true"> 
    <shape android:shape="rectangle"> 
     <solid android:color="@color/android_ics_blue_light"/> 
    </shape> 
</item> 


<item android:state_pressed="true"> 
    <shape android:shape="rectangle"> 
     <solid android:color="@color/android_ics_blue_light"/> 
    </shape> 
</item> 

<item> 
    <shape android:shape="rectangle"> 
     <solid android:color="@color/light_grey"/> 
    </shape> 
</item> 

В коде ImageButton определить вашу иконку как СРК и новую вытяжку в качестве фона, как это :

<ImageButton 
       <!-- ... --> 
       android:src="@drawable/icon_search" 
       android:background="@drawable/actionbar_ontouch" 

       /> 

Работает как очарование!