Drawable.createFromPath 또는 다른 InputStream을 사용하는 여러 메서드에서로드 할 때 9 패치 드로어 블을 사용할 수 없습니다 (예 : 9 패치 이미지가 늘어납니다).Drawable.createFromPath 또는 FileInputStream에서 NinePatchDrawable
리소스를로드 할 때 동일한 9 개의 패치를로드하면 문제가 없습니다. 내가 시도하는 방법은 다음과 같습니다.
Button b = (Button) findViewById(R.id.Button01);
Drawable d = null;
//From Resources (WORKS!)
d = getResources().getDrawable(R.drawable.test);
//From Raw Resources (Doesn't Work)
InputStream is = getResources().openRawResource(R.raw.test);
d = Drawable.createFromStream(is, null);
//From Assets (Doesn't Work)
try {
InputStream is = getResources().getAssets().open("test.9.png");
d = Drawable.createFromStream(is, null);
} catch (Exception e) {e.printStackTrace();}
//From FileInputStream (Doesn't Work)
try {
FileInputStream is = openFileInput("test.9.png");
d = Drawable.createFromStream(is, null);
} catch (Exception e) {e.printStackTrace();}
//From File path (Doesn't Work)
d = Drawable.createFromPath(getFilesDir() + "/test.9.png");
if (d != null) b.setBackgroundDrawable(d);