Android 함수 View.setPadding(int left, int top, int right, int bottom)
는 px 값만 허용하지만 dp로 패딩을 설정하고 싶습니다. 주위에 방법이 있습니까?
답변
바로 코딩
int padding_in_dp = 6; // 6 dps
final float scale = getResources().getDisplayMetrics().density;
int padding_in_px = (int) (padding_in_dp * scale + 0.5f);
답변
XML 파일 (최소한 대부분의 경우 더 낫다)에서 차원 (dp 등)을 정의하면 다음 코드를 사용하여 픽셀 값을 얻을 수 있습니다.
context.getResources().getDimensionPixelSize(R.dimen.your_dimension_name)
답변
프로그래밍 방식으로 값을 dp로 변환하는 더 좋은 방법이 있습니다.
int value = 200;
int dpValue = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
value,
context.getResources().getDisplayMetrics());
그런 다음 dpValue
방법에 적용 하십시오. 예를 들면 다음과 같습니다.setPadding(dpValue,dpValue,dpValue,dpValue);
답변
특정 DPI 값에 대한 픽셀을 계산할 수 있습니다. http://forum.xda-developers.com/showpost.php?p=6284958&postcount=31
답변
나도 같은 문제가 있습니다. 내가 찾은 유일한 해결책은 (실제로 도움이되지 않습니다 :)) Xml 파일에 설정하는 것입니다.
코드에서 밀도를 얻을 수있는 경우 “딥 단위를 화면 픽셀로 변환하는 것은 간단합니다. 픽셀 = 딥 * (밀도 / 160)”이라는 변환을 사용할 수 있습니다. ( http://developer.android.com/guide/practices/screens_support.html에서 )
편집 : 화면 밀도를 얻을 수 있습니다 : http://developer.android.com/reference/android/util/DisplayMetrics.html#densityDpi