Android 修改狀態欄的方法
/** * 活動基類,其餘子活動繼承就能夠了 */
public class BaseActivity extends AppCompatActivity {
/** * 狀態欄的顏色 */
public static final int THIS_STATES_BAR_COLOR = R.color.vx_top_black;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base);
// 設置狀態欄背景
setThisStatusBarColor(THIS_STATES_BAR_COLOR);
}
/** * 修改狀態欄的背景 * @param resId 顏色id */
public void setThisStatusBarColor(final int resId) {
getWindow().getDecorView().addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
//利用反射機制修改狀態欄背景
int identifier = getResources().getIdentifier("statusBarBackground", "id", "android");
View statusBarView = getWindow().findViewById(identifier);
// 這裏傳入想設置的顏色
statusBarView.setBackgroundResource(resId);
getWindow().getDecorView().removeOnLayoutChangeListener(this);
}
});
}
}