2013-03-15 3 views
6

패딩의 상대 크기를 사용할 수 있어야합니다 - 장치의 해상도와 dpi에 따라 더 크거나 작아야합니다.여백과 패딩이있는 Android 가중치

예를 들어 내보기가 100px 와이드 인 경우 10px 왼쪽 및 10px 오른쪽 패딩을 갖고 싶습니다. 그러나 고밀도 화면에서 실행되는데 250px라고하면 왼쪽 및 오른쪽 패딩이 각각 25pixels가되어야합니다.

하드 코딩 픽셀 또는 dp가 적당하지 않은 것처럼 보이며, 또한 필자가 배제 할 수있는 코드 배후 논리를 피하는 것을 선호합니다. 나는 또한 동일한 효과를 얻기 위해 추가 가중 된 빈 뷰를 사용하지 않는 것을 선호합니다. 어느쪽으로 든 패딩을 시뮬레이션 할 수있는 방법이 확실하지 않습니다.

XML에서이 작업을 수행 할 수있는 방법이 있습니까? 또는 코드 뒤의 장치 해상도/dpi를 기준으로 크기를 조정해야합니까?

+0

좀 더 구체적이어야합니다. 여백, 안쪽 여백 및 무게에는 모두 매우 다른 목표가 있습니다. 가중치는보기의 너비 및/또는 높이를 설정하지만 여백은 설정하지 않습니다. 안쪽 여백 /보기 자체에 대한 * 안쪽 여백은 weight 속성에서 더 멀리 떨어져 있습니다. –

+0

@StefandeBruijn point 찍은, 질문을 개정. – George

+1

DP (i)가 적당하지 않은 이유는 무엇입니까? 하드 코딩 된 픽셀이 아닙니다. 인치당 도트입니다. 그들은 당신이 원하는 것을 정확하게 할 것입니다. 8dpi (Google의 권장 마진)는 저해상도 화면보다 고해상도 화면에서 더 많은 픽셀이됩니다. –

답변

0

실제로는 "패딩의 상대적인 크기"가 아니지만, 안드로이드를 사용하면 dimension value defined in XML은 원하는대로 할 수 있다고 생각합니다. "픽셀 하드 코딩"을 피하기를 원할 때 질문에서 짐작하기는 어렵지만 "XML에서 이것을하십시오";)

위 링크는이 예를 제공합니다.

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <dimen name="textview_height">25dp</dimen> 
    <dimen name="textview_width">150dp</dimen> 
    <dimen name="ball_radius">30dp</dimen> 
    <dimen name="font_size">16sp</dimen> 
</resources> 

그런 다음;

<TextView 
    android:layout_height="@dimen/textview_height" 
    android:layout_width="@dimen/textview_width" 
    android:textSize="@dimen/font_size"/> 

Android SDK 자체에서이 방법을 사용합니다.

예 : 당신이 "구성 한정자 이름"을 사용하여 providing resources을 때 values/dimens.xml

<resources> 

    <!-- Default screen margins, per the Android Design guidelines. --> 
    <dimen name="activity_horizontal_margin">16dp</dimen> 
    <dimen name="activity_vertical_margin">16dp</dimen> 

</resources> 

values-sw600dp/dimens.xml

<resources> 

    <!-- 
    Customize dimensions originally defined in res/values/dimens.xml (such as 
    screen margins) for sw600dp devices (e.g. 7" tablets) here. 
    --> 

</resources> 

당신은 API 수준, 화면 크기, 가로 대 세로, 위의 "더"의 조합에서 values-FOO를 타겟팅 할 수 있습니다 .