AppCompat 25.1.0 では効かない Android 4.4.x の backgroundTint

最初の私のイメージとしては,

サポートライブラリが充実してきているので ボタンの色は, banckgroundTint で簡単に変更できる!

でしたが...

おさらい

まず, ボタンを設置します.


    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@android:color/white"
        android:text="Button" />

灰色のボタンが表示されて押したら, それなりにエフェクトが効いて「押されました感」が見て分かります.

ボタンの色を変えます.


    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@android:color/white"
        android:text="Button"
        android:background="@color/colorAccent" />

ボタンの色が変わりましたが, 押したときにエフェクトが効きません.

background 属性のかわりに backgroudTint を使います.


    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@android:color/white"
        android:text="Button"
        android:backgroundTint="@color/colorAccent" />

これで, 背景色も変わりかつエフェクトも効きます.

background ではなく, backgroundTint で色を指定する

ということですね.

Button と AppCompatButton の記述

StackOverflow などを見ているとさまざまな記述が見えます.

android - Lollipop's backgroundTint has no effect on a Button - Stack Overflow

ただ「ボタンの色を変えたいだけ」なのですが, なんだか混乱しています.

backgroudTint を使った記述にも似たようなものいくつかあるようです.


    <android.support.v7.widget.AppCompatButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@android:color/white"
        android:text="AppCompatButton"
        android:backgroundTint="@color/colorAccent" />


    <android.support.v7.widget.AppCompatButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@android:color/white"
        android:text="AppCompatButton"
        app:backgroundTint="@color/colorAccent" />

Button のかわりに AppCompatButton を使っていたり, backgroundTint の prefix が android: となっていたり app: になっています.

とりあえず, すべてをレイアウトに記述して表示してみました.

以下3つの挙動は予想通りで同じです.


<Button
    android:backgroundTint="@color/colorAccent"
    ...


<AppCompatButton
    android:backgroundTint="@color/colorAccent"
    ...


<AppCompatButton
    app:backgroundTint="@color/colorAccent"
    ...

Button と記述した場合でも, 内部でいい感じに入れ替えてくれているようですね.

[Tool]-[Android]-[Layout Inspector]

AppCompat を意識すること無く, 昔からの Button を使って記述していけばサポートライブラリが対応してくれるということですね!

AppCompat は えらい!!

Android 4.4 KITKAT で確認する

結果 : 全てダメ.

え,

色とエフェクト両方きちんと反映されているものがない...

なんなんすかね これ...

AppCompat のバージョンを下げてみます.

//compile 'com.android.support:appcompat-v7:25.1.0'
compile 'com.android.support:appcompat-v7:25.0.1'

Android 4.4 では, backgroudTint が ひとつの記述だけしか意図通りに表示してくれません.

AppCompat はクソ!!

そら混乱もしますわ.

まとめ

backgroundTint についての
OSバージョンと appcompat-v7 バージョンの関係

現状では,

AppCompat-v7 を 25.0.1 で


   <android.support.v7.widget.AppCompatButton
	....
        app:backgroundTint="@color/colorAccent" />

と書いておくのが吉.


Chromecast のボタンが表示されなくなった場合

ここ数日間, 使いづらいなあと思いながら過ごしていましたが.

「Chromecast のボタンが表示されない」

%e6%84%9b%e7%8a%ac%e3%81%ab%e9%87%8e%e6%80%a7%e3%82%aa%e3%82%aa%e3%82%ab%e3%83%9f%e3%81%8b%e3%82%99%e8%bf%91%e3%81%a4%e3%82%99%e3%81%84%e3%81%9f%e3%81%a8%e3%81%8d%e3%80%81%e5%bd%bc%e3%81%af%e3%81%aa

もう今後はこの仕様になったのかと思っていました.

ふと, 画面左下にこんなマークが表示されてる.

youtube

押すと, 以前の画面に戻れるようです.

youtube-2

使えるようになりました.

%e7%8a%ac%e3%81%97%e3%82%99%e3%82%83%e3%81%aa%e3%81%84__%e3%81%99%e3%82%99%e3%81%a3%e3%81%a8%e4%b8%80%e7%b7%92%e3%81%9f%e3%82%99%e3%81%a3%e3%81%9f%e6%84%9b%e7%8a%ac%e3%81%a8%e7%aa%81%e7%84%b6%e3%81%ae

このボタン表示されなくても, Chrome ブラウザのメニューに新しく追加された「キャスト」を選択してテレビに送信もできたけど, 「タブごと」か「デスクトップ」の選択しかなく, なんだかパソコンに負荷がかかるような.

こんな, 実験的(?)な画面の更新, いつからされてたのかっ???


アメリカ選挙の投票て問題発生しすぎじゃね? - Google Trends Electionland

日本の選挙投票と比べるとかなりIT化されてるっぽい.

こんな不具合がおきているTwitter動画があったり,


そんな投票の問題状況をリアルタイムで確認できるサイトがあったりするけど...

google_trends_electionland

Google Trends Electionland

あちこちで「暫定投票用紙」とか

「投票マシンの問題」とか起きてる模様にみえるけど,

こんなに問題あっていいものなのか?

このサイトってどうやってデータを集めてるのかしらんけど,

当てにならないものなのかな?

Google Trends Electionland | Hacker News