마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

x, y 좌표와 width, height값을 알고 있을때 layout 자유롭게 그리기

+1 추천
안드로이드 화면 상에서

 

x, y 좌표와 wdith height 값을 알고 있을 때

사각형으로 레이아웃을 그릴 수 있을까요?

그 레이아웃 안에는 textview가 들어가야 되는 작업을 진행해야해서

Canvas로는 안될 것 같아서 질문드립니다...
taejun (7,240 포인트) 님이 2015년 3월 6일 질문
x, y 좌표와 위드 하이트를 알고 있을때 사각형으로 레이아웃을 그린다는게 무슨 말씀인가요?? 동적으로 화면에서 레이아웃을 만드는건가요??

아니면 그냥 사각형안에 텍스트뷰 들어가게 하는 레이아웃을 만들고 싶으신건가요?
후자의 경우, xml에서 layout에 background ="@layout/shape" 으로 설정하시면 (물론 shape은 님이 직접 사각형 그리는 xml을 작성하셔서 음 구글에 치면 커스텀 사각형 많이 나오니 적용시키시면 될거에요) 배경에 사각형이 깔립니다. 그다음 아랫분 말씀대로 padding으로 간격 조금 조절해주면 되실거에요.
그 레이아웃 하위 child쪽에다가 textview 선언하시면 사각형안에 텍스트뷰가 들어가게 되는 꼴이 되버리죠 ㅎ

1개의 답변

+1 추천
 
채택된 답변
padding-left, padding-top, layout_width, layout_height 값으로 가능은 할것 같지만

 

px값으로 한다면 해상도별 대응에 상당히 골치 아플것 같네요.
이라슈 (8,770 포인트) 님이 2015년 3월 6일 답변
taejun님이 2015년 3월 9일 채택됨
dip으로도 어렵겠죠??
public static int DPFromPixel(int pixel, Context context)
    {

        float scale = context.getResources().getDisplayMetrics().density;

        return (int)(pixel / 1.5f * scale);
    }

px를 dp로 변환하는 코드입니다.

java코드에서 dip로 크기를 지정할 수 없기 때문에 기기 해상도에 맞춰서 px로 변환해 줘야 합니다.
고로 dp를 기기해상도에 맞춰 px로 변환하고 싶으시면
 public static float convertDpToPixel(float dp, Context context){
        Resources resources = context.getResources();
        DisplayMetrics metrics = resources.getDisplayMetrics();
        float px = dp * (metrics.densityDpi/160f);
        return px;
    }

참고하세요
...