3

제 애플리케이션에서 나는 actionbarsherlock을 사용하고 있습니다. 나는 다른 활동으로 이동하여 주요 활동으로 돌아가 그러나 때, 예상대로setBackgroundDrawable이 제대로 작동하지 않습니다.

getSupportActionBar().setBackgroundDrwable(R.drawable.test).

그것은 잘 작동이 색상이 보여됩니다 사용합니다. 바 색상이 검은 색으로 바뀝니다 (내 프로그램에서는 backgrounddrawble에 대해 검은 색을 설정하지 않고 setSupportAction().setBackgroundDrawableonStart()이라고 부릅니다). 내가

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0xff550000)));

에 코드를 변경할 경우, 응용 프로그램은 잘 작동합니다. 뒤로 버튼을 클릭하면 색상이 예상대로 0xff55000로 설정됩니다.

+0

Oncreate() 메서드 –

+0

에서 해결되었습니다. 문제는 경쟁 조건 때문입니다. ActionBar 객체는 다른 스레드에 의해 얻어 지므로 getSupporrtActionBar.setBackgroundDrawable은 작동하지 않습니다. –

답변

1

프로그래밍 방식으로 색상을 설정하는 동안 색상 코드를 직접 사용하지 말 것을 제안합니다. 그것은 그것을 가져 가지 않을 것이다. 이런 식으로 시도해보십시오.

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(mContext.getResources().getColor(Color.BLACK))); 

희망이 있습니다.

+0

Drawable 파일은 레이어 목록 드로어 블이며 그 안에 그라데이션 셰이프를 정의합니다. 여기서 문제는 프로그래밍 방식으로 GradientDrawable 객체를 선언하고 setBackgroundDrawable (object)를 사용한다는 것입니다. 작업 표시 줄이 예상 색상으로 바뀌지 않습니다. 주 활동으로 돌아 가면 검은 색으로 변합니다. 그러나 작업 표시 줄의 아무 버튼이나 클릭하면 drawable 파일에 정의 된 예상 색상이됩니다. 그래서 나는 뒤로 버튼에 액션 "클릭"이 발생했을 때, 앱이 정의 된 드로어 블 파일을 가져올 준비가되지 않았다고 생각합니다. 드로어 블 파일에서만 작동합니다. 나 맞아??? –

+0

Color.BLACK은 색상 소스 ID가 아니고 색상 값입니다. 새로운 ColorDrawable (Color.BLACK) 사용 – Benoit

0

네비게이션 서랍 토글 목록과 함께 사용할 경우 나에게 적합하지 않습니다. 내 경우에는 토글을 사용하지 않으면 초 동안 배경이 흰색으로 바뀌고 배경 드로어 블을로드합니다. 토글을 사용하면 배경이 흰색으로 유지됩니다.

배경을 변경하는 대신 얻으려는 효과를 얻기 위해 사용자 지정보기를 사용해야했습니다.

0

나는 거의 같은 문제가있다. getActionBar(). setBackgroundDrawable을 두 번 호출하면 작동하지 않는다. onCreate에서 한 번만 호출하면 작동합니다. OnResume에 코드를 삽입하면 첫 번째 onResume에서 작동하지만 다른 onResume에 대해서는 회색으로 설정됩니다.

관련 문제