2014-01-09 2 views
0

나는 Android 태블릿 전용으로 앱을 만들고 있으며 일부에는 다양한 뉴스 헤드 라인을 기반으로 동적으로 생성 된 버튼이 있습니다. 하나의 dimens.xml을 가지고 DisplayMetrics의 배율 인수를 사용하여 서로 다른 밀도에 적합한 크기를 만듭니다. 문제는 내 xml 크기를 변경할 때 메서드가 반환하는 차원에 아무런 영향을 미치지 않는다는 것입니다.Button/TextView에서 getDimension()을 사용하면 항상 동일한 값을 반환합니다.

RelativeLayout.LayoutParams announcementButtonLayout = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
announcementButtonLayout.topMargin = topMargin; 
announcementButtonLayout.addRule(RelativeLayout.ALIGN_PARENT_TOP); 
announcementButtonLayout.height =  this.getResources().getDimensionPixelSize(R.dimen.news_button_height); 
announcementButtonLayout.width = getResources().getDimensionPixelSize(R.dimen.dashboard_right_width); 

Button button = new Button (this.getActivity()); 
button.setWidth(getResources().getDimensionPixelSize(R.dimen.dashboard_right_width)); 
button.setBackgroundResource(R.drawable.photo_edited); 
button.setTextColor(getResources().getColor(R.drawable.news_poll_item_text_color)); 
float f =Utilities.getPixelScaleMultiplier(); 
f *= getResources().getDimension(R.dimen.news_item_text); 
button.setTextSize(f); 
button.setText(announcement.getDescription()); 
button.setMaxLines(1); 
button.setTag(announcement); 
button.setOnClickListener(this);    
button.setLayoutParams(announcementButtonLayout); 
button.setId(index); 

위의 버튼 코드를 기반으로 한이 신뢰 위반의 원인은 무엇입니까?

감사합니다,

Adurnari

편집 :

+0

do announcementButtonLayout.width = getResources(). getDimensionPixelSize (R.dimen.dashboard_right_width); 대신 setWidth() – himanshurb

+0

팁 주셔서 감사하지만 그것을하지 않았다. – Adurnari

답변

0

사용의 LayoutParams는 뷰 그룹에 추가 한 후,보기 폭과 높이를 설정하는 기준으로 내의 LayoutParams을 포함.

Button button = new Button (this.getActivity()); 
//button.setWidth(getResources().getDimensionPixelSize(R.dimen.dashboard_right_width)); 
button.setBackgroundResource(R.drawable.photo_edited); 
button.setTextColor(getResources().getColor(R.drawable.news_poll_item_text_color)); 
float f =Utilities.getPixelScaleMultiplier(); 
f *= getResources().getDimension(R.dimen.news_item_text); 
button.setTextSize(f); 
button.setText(announcement.getDescription()); 
button.setMaxLines(1); 
button.setTag(announcement); 
button.setOnClickListener(this);  
LayoutParams announcementButtonLayout = new LayoutParams(getResources().getDimensionPixelSize(R.dimen.dashboard_right_width), LayoutParams.WRAP_CONTENT);   
button.setLayoutParams(announcementButtonLayout); 
button.setId(index); 

dimens.xml 값을 변경 한 후 프로젝트를 정리하십시오. 아마도 R 파일이 귀하의 경우 업데이트되지 않을 수 있습니다. button.setBounds

+0

죄송합니다 hbansal, 청소가 작동하지 않지만 "params"는 무엇을해야합니까? announcementButtonLayout에 이러한 매개 변수를 사용해야합니까? – Adurnari

+0

LayoutParams는 레이아웃 및 측정 패스 중에 뷰 경계 (높이, 너비, 여백 등)를 정의합니다. 편집 내 대답 – himanshurb

+0

글쎄, 당신이 정의한 두 번째 의미. 그 모든 것들은 이미 위에 설정되었습니다. 필드를 통해 대신 매개 변수로 너비를 정의하면 정말 그것을 바꿀까요? – Adurnari

0

봅니다 솔루션을 찾았

"청소"나는 내 XML로 변경 한 값을 복용하고 그들이 있던 페이지의 이후 부분에 추가했다 이전에 위치해 있습니다. 더 낮은 것들은 크기를 지시하고 있었다.

+0

버튼에 setBounds가 없습니까? – Adurnari

+0

예 .setBound() 메소드가 있습니다. – Mansouritta

관련 문제