2012-12-30 3 views
6

9 패치 이미지를 배경으로 사용하는 경우 패딩은 항상 9 패치 이미지에서 파생 된 것 같습니다. 9 패치 이미지에서 패딩 바를 사용하지 않더라도 드로어 블을 사용합니다.안드로이드 오버라이드 9 패치 패딩 (한쪽면의 XML)

안쪽 여백이 포함되지 않은 경우 Android는 왼쪽 및 위쪽 줄을 사용하여이 그리기 가능 영역을 정의합니다. 패딩 = 0dp 또는 = XDP :

http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch

그러나 당신은 안드로이드를 사용하여 XML에서 재정의 할 수 있습니다. 안드로이드 사용 : paddingLeft = Xdp가 작동하지 않습니다. 그래서 당신은 제복을 입은 채로 갇혀 있습니다. 나는이 일을 시도 :

android:padding="2dp" 
    android:paddingLeft="20dp" 

그것은 왼쪽에있는 패딩에 아무런 영향을 미치지 않았다. styles.xml에 배치하면 비슷한 결과가 나타납니다.

이 문제를 해결할 수 있었던 유일한 해킹은 코드에서 패딩을 설정하는 것이 었습니다.

답변

7

경우 (안드로이드는 : 패딩 제시) 다른 모든 패딩 값을 대체 다른 경우 (안드로이드가 : paddingXXX 제시)이 BG를 그릴 수 paddingXXX 무시 (XXX = 왼쪽 | 오른쪽 | 맨 위 | 아래) 다른 경우 (보기 당김 BG있다)이 drawable (귀하의 경우에는 9 패치)의 패딩 값이 사용됩니다. 그렇지 않으면 기본 패딩이 적용됩니다 (보통 0)

따라서 android : padding = "2dp"를 사용하지 마십시오. 패딩 속성은 모든 것을 재정의합니다. paddingLeft = 20dp, paddingTop = 2dp, paddingRight = 2dp, paddingBottom = 2dp를 사용하십시오.

또는 paddingLeft = 20dp로 설정할 수 있으며 다른 패딩 값은 bg 드로어 블에서 가져올 수 있습니다.

+2

감사합니다. 스타일 설정이 CSS와 유사하다고 생각했습니다. 이것은 문제를 해결했습니다. 질문에 대한 리드가 있지만 view.setBackgroundResource (9patch_background); 9patch_background는 XML을 통해 패딩 세트를 재정의합니다. XML에서 패딩을 무시하지 않고 배경을 설정하는 방법이 있습니다. – pt123

+1

패딩 값을 가져와 배경을 설정하고 이전 패딩 값을 다시 설정해야합니다. – Leonidos