아무도 9Patch 배경을 동적으로 설정하려하지 않았습니까? 중요하면 버튼의 너비와 높이가 wrap_content로 설정됩니다.동적으로 9 패치 배경을 설정하십시오
예인 경우 "검은 색"문제를 어떻게 해결 했습니까? 당신이 당신의 이미지를 미리 컴파일하지 않았기 때문에
감사
아무도 9Patch 배경을 동적으로 설정하려하지 않았습니까? 중요하면 버튼의 너비와 높이가 wrap_content로 설정됩니다.동적으로 9 패치 배경을 설정하십시오
예인 경우 "검은 색"문제를 어떻게 해결 했습니까? 당신이 당신의 이미지를 미리 컴파일하지 않았기 때문에
감사
당신이 9 패치 이미지를 그린 검은 점을보고하는 경우, 그것은이다.
런타임시 9 패치 이미지를 배경으로 설정하려면 경계를 제거하고 PNG 청크로 인코딩 할 때 미리 컴파일해야합니다.
응용 프로그램의 res/drawable
폴더에 .9.png 이미지를 삽입하고 컴파일 한 다음 .apk (Eclipse에서는 project root > Android Tools > Export Unsigned Application Package
마우스 오른쪽 버튼으로 클릭)를 생성하면됩니다. 그런 다음 .apk의 압축을 풀면 9 패치로 컴파일 된 데이터가 포함 된 .9.png 이미지가 생성됩니다.
, 이미지로드 그런 일을 수행
private Drawable loadNinePatch(String path, Context context) {
Bitmap bitmap = BitmapFactory.decodeFile(path);
byte[] chunk = bitmap.getNinePatchChunk();
if(NinePatch.isNinePatchChunk(chunk)) {
return new NinePatchDrawable(context.getResources(), bitmap, chunk, new Rect(), null);
} else return new BitmapDrawable(bitmap);
}
을 다음은 버튼의 배경으로 설정 :
button.setBackgroundDrawable(loadNinePatch("/data/data/your.app/files/button_background.9.png", context));
좋은 답변입니다. 많은 시간을 절약했습니다. –
하지 않습니다 정말로 여기에 묻고 자하는 것을 얻으십시오 – XepterX
http://stackoverflow.com/q/5079868/543711 – iTurki
런타임에 Button의 배경을 변경해야합니다. 배경은 9Patch입니다. 그렇게하면 9 패치가 제대로 작동하지 않습니다. – Toochka