ssomai / ScalableLayout

Scalable Layout For Android
Apache License 2.0
269 stars 87 forks source link

scale_left_baseposition 관련해서 #43

Open edgelv34 opened 7 years ago

edgelv34 commented 7 years ago

안녕하세요^^ 해상도 문제 때문에 고심하던중 만들어주신 Lib 를 보고 사용하고있는 사용자입니다^^ 먼저 감사의 말씀을 드립니다. 덕분에 큰 문제들은 어느정도 해결이 된 것같습니다 ㅎ

본론으로 들어가겠습니다. 보통 RelativeLayout에서 TextView의 width를 wrap으로 잡고 layout_centerHorizontal="true"로 하게되면 텍스트뷰는 현재 레이아웃의 중앙으로 잡혀지게됩니다.

ScalableLayout 같은 경우에는 scale_left_baseposition = center로 하면된다는 글을 보았습니다. (https://github.com/ssomai/ScalableLayout/releases/tag/v2.1.1)

그래서 310 x 500 으로 scale_base_width, height를 맞추고 TextView를 scale_left="155" scale_left_baseposition="center" 로 잡았습니다. 여기까지는 문제가 없었습니다.

그런데 제 텍스트가 들어갈 TextView 의 scale_width를 잡아주려고하는데... 여기는 텍스튜의 길이가 가변적이라 어떻게 잡아줘야할 지 모르겠더군요... width를 max로 잡아버리면 center가 되지않고 맨 왼쪽으로 가게되고... 어떤식으로 width를 잡는게 가장 좋을까요..?

<com.ssomai.android.scalablelayout.ScalableLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                sl:scale_base_width="310"
                sl:scale_base_height="500"
                android:layout_centerHorizontal="true"
                android:layout_below="@id/login_title_layout">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/login_content"
                    android:textColor="@color/white"
                    android:textStyle="bold"
                    sl:scale_left="155"
                    sl:scale_left_baseposition="center"
                    sl:scale_top="25"
                    sl:scale_top_baseposition="center"
                    sl:scale_width="270"
                    sl:scale_height="20"
                    sl:scale_textsize="11"
                    sl:textview_wrapcontent_direction="bottom"
                    sl:textview_wrapcontent_resizesurrounded="true"
                    sl:textview_wrapcontent_movesiblings="true"/>
</com.ssomai.android.scalablelayout.ScalableLayout>
edgelv34 commented 7 years ago

추가적으로 TextView 에서 paddingLeft 기능을 대체할 만한 기능이 있을까요? paddingLeft에 dp 값을 넣어도 태블릿에선 .. 원하는 패딩조절이 되질 않네요..;;

ssomai commented 7 years ago

안녕하세요~. 잘 써주시니 감사합니다~ Text의 길이가 가변적인 상황에서 짧을때는 어떤 배치, 길때는 어떤 배치가 되기를 원하는지 알 수 있을까요~?

edgelv34 commented 7 years ago

너무 늦은 답변 죄송합니다. 확인해본결과 http://www.atetric.com/atetric/javadoc/com.ssomai/android.scalablelayout/2.0.0/com/ssomai/android/scalablelayout/ScalableLayout.TextView_WrapContent_Direction.html 문서에서 wrap을 사용할 수 있는 것을 확인햇습니다.

sl:textview_wrapcontent_direction="Right"

와 같이 사용하게되면 wrap이 되긴하지만 자동으로 글이 내려가지않는 다는 문제점이 있습니다. 예로들어서 '반갑습니다 TEST 문구 입니다 글자가 내려갑니다. 하하하' 라고 Text를 적고 sl:scale_textsize="15" 로 하게되면 글자가 잘리게 됩니다. 자동으로 내려가게 하려면 어떻게 해야하는지 구글링을 해도 나오질 않아서...

sl:textview_wrapcontent_resizesurrounded="true" sl:textview_wrapcontent_movesiblings="true" 둘다 사용해봤지만 되지않는군여..

화면사이즈보다 클경우 자동으로 내려가면 완벽할 것 같습니다.

--------------------------30분뒤

기본적으로 레이아웃을 center를 잡기위해서는 scale_left를 상위레이아웃에서 지정한 scale_base_width 의 반을 주고 sl:scale_left_baseposition="center" 하면 되고,

wrap을 하기위해서는 sl:textview_wrapcontent_resizesurrounded="true" sl:textview_wrapcontent_movesiblings="true" sl:textview_wrapcontent_direction="bottom" 을 주고 scale_width를 상위레이아웃에서 지정한 scale_base_width 로 지정하면 내려가기는 하는데... 이게 그러면 scale_left가 조금만 오른쪽으로 가도 글자가 바로 잘리게되네여..

흠...

bbb

위에 그림은 그나마 안잘리고 잘 내려갔는데 해당 소스는

<TextView
            android:id="@+id/splash_title1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="반갑습니다 TEST 문구 입니다 글자가 내려갑니다."
            sl:scale_left="155"
            sl:scale_left_baseposition="center"
            sl:scale_top="110"
            sl:scale_width="310"
            sl:textview_wrapcontent_resizesurrounded="true"
            sl:textview_wrapcontent_movesiblings="true"
            sl:textview_wrapcontent_direction="bottom"
            sl:scale_textsize="15"
            android:textColor="@color/white"/>

이렇구요.

근데 만약에 left가 center가 아니라면.

aaa

<TextView
            android:id="@+id/splash_title1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="반갑습니다 TEST 문구 입니다 글자가 내려갑니다."
            sl:scale_left="160"
            sl:scale_top="110"
            sl:scale_width="310"
            sl:textview_wrapcontent_resizesurrounded="true"
            sl:textview_wrapcontent_movesiblings="true"
            sl:textview_wrapcontent_direction="bottom"
            sl:scale_textsize="15"
            android:textColor="@color/white"/>

이렇게 됩니다.

아마 width가 정해져있기 때문인 것같은데.. 음.. 혹시 방법이 있을까요~?^^

그리고 매우 잘 사용하고있습니다. 5개 Activity중 3개를 사용하고있어요 ㅎ 덕분에 해상도 문제도 많이 해결 되었습니다^^ ( 현재는 디자인가이드로 크기를 딱 정해서 해당 크기에 맞춰 진행하고있어서 문제는 없지만 해당 기능들이 들어감으로써 더 편해질 듯합니다^^) 감사합니다~

ssomai commented 7 years ago

안녕하세요~ 상세한 이슈잉 감사합니다 ㅎ 저도 답변이 늦었네요 ㅎ;

width가 정해져있기 때문이 맞습니다 width를 화면 넘어가지 않게 지정하시면 잘 내려갈거에요~

혹시 답이 안 되었다면 다시 질문주세요~ 잘 사용하고 계신다니 제가 다 기쁘네요 감사합니다~~ ^0^