Yikes. XML은 의 중 일부는 동적 런타임 작성 또는 적어도 두 가지 조합에 대해 비명을 지르는 것이 가장 좋습니다. 처리 시간이나 apk 크기에서 어느 정도 차이를 보지 않을 것입니다. 이는 코드 유지 보수 비용 절감으로 이어질 것입니다.
예를 들어, 각 문자 버튼에 대해 패딩과 같은 새로운 속성을 변경하거나 추가하려는 경우 어떻게 될지 고려하십시오. 수동으로 모든 XML 요소를 변경하거나 적절하게 찾기/바꾸기위한 영리한 정규식에 대해 생각하고 싶습니까?
포괄적이고 유지 보수가 쉬운 솔루션을 위해 <include>
문과 런타임 수정을 함께 사용했습니다.먼저 버튼 하나를 만들어서 모든 단추가 어떻게 보이길 원하는지 생각해보십시오. "LetterButton"스타일을 style.xml에 추출하고 버튼에 android:style="@style/LetterButton"
속성을 대신 사용하십시오. 이렇게하면 단일 파일에서 스타일을 변경하고 모든 문자 버튼에 영향을 줄 수 있습니다.
다음으로 버튼 자체를 <include>
파일로 추출하십시오. GUI 버전의 단추를 마우스 오른쪽 단추로 클릭하고 "추출 포함 ..."을 선택하면됩니다. 그런 다음 <include>
버튼을 준비하십시오 (예 : <TableLayout>
). 각각 @+id/letter_button_0
~ _25
까지 고유 ID를 부여해야합니다. 이 모든 버튼에 대한 text
속성은 아무 것이나 나중에 동적으로 설정할 수 있습니다.
마지막으로 onCreate에서 {R.id.letter_button_0, ...} 형식의 int 배열과 { "A", ...} 형식의 문자열 배열을 정의하고 반복합니다. 그 (것)들에 단추를하기 = findbyId (int), button.setText (String) 각 단추에 편지를두기 위하여.
이런 식으로 더 많은 작업을하는 것처럼 보일 수도 있지만 똑똑한 UI를 만드는 데 많은 어려움을 겪고 있으므로 코드를 한 곳 (스타일 또는 포함)에서 변경할 수 있으며 모든 단추가 업데이트 되십시오.