Плохие новости
Как говорит BoD, тонировать фон кнопки в Lollipop 5.0 (уровень API 21) бессмысленно.
Хорошие новости
Lollipop 5.1 (уровень API 22), похоже, исправил это, изменив btn_mtrl_default_shape.xml (среди других файлов): https://android.googlesource.com/platform/frameworks/base/+/6dfa60f33ca6018959ebff1efde82db7d2aed1e3%5E!
Отличные новости
Новая библиотека поддержки (версия 22.1+) добавляет обратно совместимую поддержку тонирования для множества компонентов, включая AppCompatButton !
К сожалению, android:backgroundTint
свойство по-прежнему не работает (возможно, я что-то делаю не так), поэтому вам нужно установить ColorStateList
код, используя setSupportBackgroundTintList()
. Было бы здорово увидеть android:backgroundTint
поддержку в будущем. Обновление : Марсио Гранзотто прокомментировал, что app:backgroundTint
работает с AppCompatButton! Обратите внимание, что это app:
не так android:
, потому что он находится в приложении / библиотеке.
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<AppCompatButton
android:id="@+id/mybutton"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Testing, testing"
app:backgroundTint="#ff00ff"/>
</LinearLayout>
Если вы позволите ему наследовать, ваша активность будет автоматически увеличиваться AppCompatButton
вместо обычного .Button
AppCompatActivity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AppCompatButton v = (AppCompatButton) findViewById(R.id.mybutton);
ColorStateList csl = new ColorStateList(new int[][]{new int[0]}, new int[]{0xffffcc00});
v.setSupportBackgroundTintList(csl);
}
}
Вы, конечно, должны взять ColorStateList
цвет на ресурсе, но я поленился, так что ...
О, и не забудьте основать тему своего приложения на одной из Theme.AppCompat
тем, иначе совместные просмотры будут очень и очень грустными ...;)
Это работало как на 2.3.7 (Gingerbread MR1), так и на 5.0 (Lollipop 'Classic').