2013-03-22 2 views
5

사용자가 다른 단추를 누르면 기존 Android보기에 프로그래밍 방식으로 단추가 추가됩니다. 기능 측면에서 작동하지만 스타일 정보 중 일부는 무시되는 것 같습니다.Android - 프로그래밍 방식으로보기가 일부 스타일 속성을 무시합니다.

스타일 값이 미리 채워진 버튼을 포함하는 별도의 레이아웃을 사용하여 버튼을 추가하고 있습니다. getLayoutInflater를 사용하여

<Button xmlns:android="http://schemas.android.com/apk/res/android" style="@style/FileStorageDeleteButton"></Button>

, 나는 다음 레이아웃에이 버튼을 추가 할 수 있어요.

layout.addView(buttonDelete, 1);

buttonDelete = (Button) getLayoutInflater().inflate(R.layout.pete_button_filedelete, null);

LinearLayout layout = (LinearLayout)findViewById(R.id.layoutFileStorage);

나는 색상을 설정 값 디렉토리에 XML 파일 서비스가 추가 될 때 버튼에서 사용중인 대부분의 @style/FileStorageDeleteButton, 텍스트 등을 . 그러나 어떤 이유로 4 가지 여백 속성과 layout_below이 무시되고 있습니다.

이 버튼이 나타나면 LogCat에 오류가 표시되지 않습니다. 단순히 스타일이 적용되지 않는 것 같습니다. 해당 레이아웃의 XML에 단추를 수동으로 포함하면 모든 스타일이 성공적으로 사용됩니다.

도움을 주시면 감사하겠습니다.

답변

3

addView()을 호출 할 때 레이아웃 매개 변수를 전달해야합니다. 레이아웃 매개 변수가 단일보기와 관련이 없기 때문에 항상 주위의 컨텍스트에서 사용됩니다. addView()의 변종은 LayoutParams 인수를 취합니다.

편집 추가 자세한 내용은

당신은 LinearLayout.LayoutParams 세트를 만들고 거기에 여백을 설정해야

는 다음 addView()

layout_below에 그 전달은 속성에만 관련이 있습니다 (어쨌든 LinearLayout 무시됩니다 RelativeLayout 일 때 addView(buttonDelete, 1)으로 전화하면 선형 레이아웃으로 뷰를 배치 할 위치를 알려줍니다.

+0

감사합니다. David이 올바른 방향으로 나를 보내면 p를 찾을 수 있습니다. 더 많은 변수를 팽창 시켜라. 이제는 'layout_below'가 여전히 무시되지만 'buttonDelete = (Button) getLayoutInflater(). inflate (R.layout.pete_button_filedelete, layout, false); 나는이 문제를 해결할 수 있지만, 왜 아직도 그 중 하나가 작동하지 않는지 궁금해하고 있습니까? 다시 한 번 감사드립니다! 만약 당신이 upvote에 대한 평판을 가지고, 나는 것입니다 : –

+0

'layout_below'는'RelativeLayout'에만 사용됩니다. 'LinearLayout'은이 속성을 무시합니다. 'LinearLayout'에서는 레이아웃 내의 뷰 위치를 사용하여 위/아래를 제어 할 수 있습니다. –

관련 문제