LoginSignup
1
2

More than 5 years have passed since last update.

Android5でsetColorFilterしても、色が変わらない

Posted at

という現象にぶつかったので原因を記録します。
試しにlayoutを作成します。

テスト

layout.xml
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.b_jung.memooo.MainActivity">

    <ImageView
        android:id="@+id/icon"
        android:layout_gravity="center"
        android:tint="@color/colorAccent"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@drawable/icon"
        />

</FrameLayout>

でMainはこんな感じに。

MainActivity.kt
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val view = findViewById<ImageView>(R.id.icon)
        view.setColorFilter(ContextCompat.getColor(this, R.color.colorPrimaryDark))
    }
}

そして実行してみたら…変わらない。
なんでだろう、と思いましたが、原因はtintでした。
どうやら、Android5ではxmlでImageViewにtintを入れたら、それが固定になるようですね。

以後はtintで入れるデフォの色は、初期化するときにsetColorFilterで入れています。これで解決。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2