2013-07-01 2 views
4

내 테이블 레이아웃의 그래픽 매개 변수를 지정하기 위해 setLayoutParams 메소드를 사용하려고하지만 setLayoutParams 메소드가 픽셀 값 또는 dip 값을 취하는 지 여부가 확실하지 않습니다. 특히 자바 저장 값setLayoutParams dip 값

private int blockDimension = 50; 
private int blockPadding = 2; 

그리고 메소드 호출 :

tableRow.setLayoutParams(new LayoutParams((blockDimension + 2 * blockPadding) * numberOfColumnsInMineField,blockDimension + 2 * blockPadding)); 

들이있는 픽셀로 간주하거나 한 번 메서드에 전달 변환됩니다인가를 나는이 두 변수를 선언하는 경우 예제 픽셀 사람, 것 같다 ? 그렇다면 그렇지 않은 경우 어떻게 Java에서 dip 값을 설정할 수 있습니까?

+0

방법 setLayoutParams하는 픽셀 값을 –

+0

감사 볼로디미르 Yatsykiv이 필요하지만 내가 할, 자바 딥에 값을 정의하려면 내가 그들을 통과 어쨌든 변환해야 setLayoutParams 메서드? – akari

+0

예, dp에 값이있는 경우이를 px (아래 답변 참조)로 변환 한 다음 setLayoutParams 메소드에 넣어야합니다. –

답변

7

합니다. DP 당신이 사용할 수있는 픽셀로 변환하려면 :

public int getPx(int dimensionDp) { 
    float density = getResources().getDisplayMetrics().density; 
    return (int) (dimensionDp * density + 0.5f); 
} 
+0

Okey, 켄 울프에게 감사드립니다! – akari

0

당신은 당신이 화면 의 밀도를 곱해야 딥의 값 당신은 그것을 이런 식으로 얻을 수 원한다면 : 그것은 픽셀 소요

float density = getResources().getDisplayMetrics().density 
+0

좋아, 고마워, 당신 int int blockDimensionDipValue = blockDimension * density 같은 일을해야한다는 뜻입니까? – akari

+0

네,하지만 캐스팅 blockDimension을 float하고 결과는 int로 – Blackbelt