2011-12-27 5 views
0

주제에서 언급했듯이 일부보기가 있습니다. 주제와 항상 동일한 배경을 사용하는 TableRow 또는 특수 스타일/속성이있는 TextView가 포함 된 특수 TableRow. 이러한 뷰는 동적으로 설정되므로 XML을 사용하면 문제가 발생합니다. 읽으면서 프로그래밍 방식으로 스타일을 설정할 수도 없습니다. 그래서 그것을 해결하는 가장 좋은 방법은 무엇입니까?특수한 스타일/속성으로 뷰를 동적으로 생성하는 "안드로이드 방식"은 무엇입니까?

가능성 1 : 같은
내가 사용 및 인스턴스 파생 조회수 :

public class TopicTableRow extends TableRow { 

    public TopicTableRow(Context context) { 
     super(context); 

     setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
     setBackgroundColor(Color.parseColor("#777777")); 
     setClickable(false); 
    } 
} 

가능성 2 :
나는 포함, 나는 결코 응용 프로그램에서 사용하지 않는 특별한 레이아웃 유효한 XML 템플릿을 만들 수 있습니다 이미 모든 스타일이 할당 된 필요한 뷰. 이후 나는 R.id에 의해 필요한 Views에 접근한다 ....
그러나이 방법은 나에게 매우 딜레트테 인 것으로 보인다.

저는이 두 가지 가능성이 이것을 수행하는 "진정한"안드로이드 방식이라고 생각하지 않습니다. 그렇다면이 방법은 보통 어떻게 이루어 집니까?

+0

http://stackoverflow.com/questions/2016249/how-to-programmatically-setting-style-attribute-in-a-view – Yury

+0

XML로 정의되지 않은 요소를 동적으로 만들 때 어떻게 사용해야합니까? ? – Bevor

+0

동적 요소의 스타일을 변경할 수 없습니다. 이것은 논평의 요점이다. – Yury

답변

0

요소 그룹에 특정 스타일을 설정하려면 Android에서 테마 및 스타일 개념을 사용할 수 있습니다.

당신은 여기에 읽을 수 있습니다 http://developer.android.com/guide/topics/ui/themes.html

그것은 수 없습니다 프로그래밍 방식으로 뷰의 스타일 속성을 변경할 수 있지만.

따라서 안드로이드 방식은 XML로 필요한 뷰를 생성하고 LayoutInflater를 사용하여 'java'버전의 XML 뷰를 생성하는 것입니다. 이를 통해 구성 요소를 재사용하고 원하는만큼의 행에 대해 적절한 데이터로 채울 수 있습니다.

Button view = (Button) LayoutInflater.from (this) .inflate (R.layout.textViewFromWeb, null);

나는 이것이 당신에게 유용 할 것이라 희망합니다!

+0

나는 이것에 대해 이미 생각했지만 XML로 정의 된 뷰에 스타일을 할당합니다. 제 경우에는 XML로 정의 된 뷰가 없습니다.받은 데이터로 인해 뷰를 동적으로 생성하기 때문에 제 2의 제안에 따라 R로 코드에서 액세스 할 수있는 특수 뷰를 포함하는 "더미 레이아웃"을 만들게됩니다 .신분증. 그러나 이미 말했듯이 이것은 나에게 매우 깨끗해 보이지 않습니다. – Bevor

+0

동적으로 생성 된 버튼을 추가하기 위해 약간 편집했습니다. 보기를 팽창 시키면 Java에서 사본을 작성하므로이 메소드를 사용하여 원하는 내용이나 원하는 내용을 얼마나 많이 만들 수 있습니다. – RandomSort

+0

아직 모든 것이 명확하지 않지만, 나는 지금 당장 올바른 길에 있다고 생각합니다. 핵심 정보는 /platforms//data/res/layout /에서 "raw layout"을 내 프로젝트로 복사해야한다는 것입니다. 거기에서 ArrayAdapter 및 LayoutInflater와 함께 동적 목록을 작성하는 동안 해당 뷰를 수정할 수 있습니다. 귀하의 답변이 처음에는 분명하지 않았지만 올바른 정보로 안내되었습니다. – Bevor

관련 문제