2015-08-14 2 views
2

Есть ли способ установить альфа на растягиваемое сидение внутри editText как drawableLeft?Android: drawableLeft настройка alpha

  <EditText 
       android:layout_width="match_parent" 
       android:layout_height="40dp" 
       android:background="@drawable/edittext_middle_bg" 
       android:id="@+id/birthday_overlay" 
       android:editable="false" 
       android:focusable="false" 
       android:padding="10dp" 
       android:hint="Birthday" 
       android:textColorHint="#bbbbbb" 
       android:drawablePadding="10dp" 
       android:drawableLeft="@drawable/ic_cake_black_24dp"/> 

birthdayIcon

Я получил значок из библиотеки значков материала с помощью Google. Значок - это символ альфа-1 (полный черный). Я хочу сделать его немного серым, например, сделав альфа-0,5.

Я думаю, что я могу использовать GIMP/Photoshop для изменения альфы, но предпочитаю использовать android для этого программно.

+0

Вы не можете указать его в xml, но используйте setAlpha() программно. –

+0

сделал мой ответ для вас ниже @Simon? –

+0

Привет, мне нужно немного изменить код, прежде чем я смогу проверить его. В настоящее время я получаю drawable: Drawable [] birthdayDrawables = birthday.getCompoundDrawables(); и я не могу передать его в ваш метод, поскольку у вас есть представление. – Simon

ответ

4

Так что это в конце концов, что я сделал для достижения моей желаемого результата.

Drawable[] birthdayDrawable = birthdayOverlay.getCompoundDrawables(); 
    birthdayDrawable[0].setAlpha(128); //set it at 128 so that it has 50% opacity. The opactiy here ranges from 0 to 255. 
1
@SuppressLint("NewApi") 
public static void setAlpha(View view, float alpha){ 
    if (Build.VERSION.SDK_INT < 11) { 
     final AlphaAnimation animation = new AlphaAnimation(alpha, alpha); 
     animation.setDuration(0); 
     animation.setFillAfter(true); 
     view.startAnimation(animation); 
    } 
    else 
     view.setAlpha(alpha); 
} 

Используйте этот метод. Передайте аргумент как ваш drawableLeft из EditText. Это работает для < = API 16 и> API 16.

1
Drawable drawable = getResources().getDrawable(R.drawable.yourdrawable); 

// set opacity 
drawable.setAlpha(10); 

//Set it 
button.setCompoundDrawablesWithIntrinsicBounds(drawable, 0, 0, 0); 
+1

Мой ответ объясняет устаревший метод setAlpha. Этот способ устарел <= API 16. –

+0

Классный: D полезно знать – Ben

0

Я ищу много и нашел это уникальное - для моего исследования - решение:

я делаю с CountDownTimer, работает хорошо.

Drawable[] compundDrawables = textview_with_drawableLef_Image.getCompoundDrawables(); 
Drawable leftCompoundDrawable = compundDrawables[0]; 

И после того, как в countdowntimer, я мигать leftCompoundDrawable установив:

leftCompoundDrawable.setApha(AlphaNumber); 

Работа Хорошо, нужно немного скорректировать из countDownInterval и альфа-значение шага, проверьте, когда альфа незначителен 0 или более до 255 (Alpha in Drawables - от 0 до 255) и изменить шаг alpha на + или -, но легко настроить для хорошего внешнего вида.

CountDownTimer очень удобен в некоторых случаях.

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