LoginSignup
0
0

More than 5 years have passed since last update.

Android4.1系XperiaでView#setBackgroundColor(int)をすると同色の別Viewまで色が変わる

Posted at

こんな感じの赤いViewが2つあり

スクリーンショット 2018-06-20 12.46.29.png

片方だけ色を青にします

MainActivity
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        findViewById(R.id.sample_view_1).setBackgroundColor(Color.BLUE);
    }
}

すると何故か両方青くなります

capture.png

詳細

View#setBackgroundColor(int)で背景色を変更すると、レイアウトXMLで同じbackground色を指定した別のViewまで色が変更されてしまう。

Android4.1のXperiaでのみ発生が確認できており、おそらく端末のバグ。
必ず発生するわけではなく数回アプリを立ち上げると発生する。

再現した端末

  • Xperia tablet Z SO-03E (Android4.1.2)
  • Xperiaのなんかスマホ (Android4.1系)(これだけ機種調べそこねた)

非再現端末

  • HTL21 (Android4.1.1)
  • Xperia A2 SO-04E (Android 4.2.2)
  • priori2 (Android 4.4.2)
  • Xpelia Z Ultra SOL24 (Android 4.4.2)
  • Xperia Z3 (Android 5.0.2)
  • Nexus7 (Android 6.0.1)
  • DM-02H (Android 6.0.1)
  • HUAWEI P10 lite (Android 7.0)
  • Nexus5x (Android 8.0.0)

似た投稿があった。こちらも根本原因はおそらく同じ。
View#setBackgroundColor(int) を使って色を変更したら関係ないViewまで色が変わる事案

解決方法

レイアウトファイルの方のbackgroundの記述を削除して対応した。
setBackgroundColorで背景色がセットされるので、レイアウトの方に記載は必要なかった

他には若干面倒だがbackgroundをdrawableにすることでも解決できる。

0
0
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
0
0