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

같은 라인에 TextView 여러개를 넣었을때..

+1 추천

안녕하세요

LinearLayout에서 orientation을 horizontal로 준후에

 

TextView1 TextView2 TextView3

이런식으로 같은 라인에 배치해 놓았는데요

그리고 각각 String 값 3가지를 받아서 1, 2, 3에 넣었을때

이런식의 결과가 나오는데 이것을

이런식의 결과로 얻게 할 수 있을까요?

 

String값을 합쳐서 TextView 하나에 놓으면 해결되지만..

지금 만들고 있는앱이 꼭 3개로 나눠야 하는 부분이라..

TextView 2번을 기준으로 또 다른 View를 올려야되는데

하나로 합쳐버리면 그 기준을 못잡습니다 ㅠ.

 

TextView의 Bound라고 하나요? 이게 기본적으로 사각형형태로만 잡히는것같아서

혹시 2번째 그림처럼 할 수 있는 방법이 있나 궁금합니다..

 

아니면 절대 3개로는 저렇게 만들 수 없다면

111122223333 <이런 String을 하나의 TextView에 넣었을때

2가 시작하는 절대좌표를 구할 수 있을가요?(된다면 좌표기준으로 동적으로 생성하면 되서..)

 

TextView 3개가 따로따로일때는 시작점을 getGlobalVisibleRect 이런걸로 구할 수 있는데

하나로 하면 원하는 위치에서 좌표구하기가 힘드네요.. 아무리 검색해봐도..

 

 

익명사용자 님이 2016년 10월 20일 질문
( ) 로 바꾸시면 간단할텐데 말이죠.
예 ㅠ
그럼 좀 편할것 같긴한데
대부분의 일반적인 형태가 __ 언더바이기도 하고
(하이픈도 많지만 클릭했을때 빈칸에 넣어야하므로 제외하고..)

( )로 했을때는 단어가 길어졌을때 (                         ) 보기가 who일때
(            who           )  이런식으로 나오면 깔끔해 보이지 않은 이유도 있네요 ㅠㅠ

꼼수가 아무리 생각해도 떠오르질 않네요

처음에는 문제 그대로 TextView 똑같이 만들어서 글씨색깔을 배경색과
똑같이해서 숨겨뒀다가 선택할때 _______ 이 부분만
___who___로 변경하고 setSpan으로 who만 색깔 줘서 올려봤는데

되긴 하는데 정확히 가운데 맞추기가 쉽지 않네요
스펠링 길이와 _ 언더바 길이가 다른 부분도 있고.(ex : 스펠링 l과 _ 언더바)
가운데 넣으려면 ____ 언더바 5글자면 보기도 3글자여야 가운데로 가는데
2글자이면 가운데도 안맞고.. (_to__) 또는 (__to_) 이렇게 되버리니..
(보기 선택할때마다 ___언더바의 길이를 새로고침 해주면 되는데
 클릭할때마다 윗부분이 변하면 어색한것도 있고..)

정말 힘드네요 ..
아니면 다른 배경을 주는 건 어떤지요? Html을 사용하면 폰트크기, 배경색, 글자색, 스타일 등을 원하는 부분만큼 다르게 할 수 있습니다.
TextView.setText(Html.fromHtml("<태그>"));
이렇게 사용하는거 말씀하시는거죠?

저도 있다고만 듣고 써보진 않았는데 html도 기본밖에 모르고해서 ㅠ
setText(html( <>앞Text<>+ <>빈칸부분<>+<>뒤Text<>));
이런식으로 해서 보기 선택할때만 빈칸부분 태그를 바꿔주면 되는건가요?

이게 가능하다면 열쉼히 html공부해서 해결하고 싶습니다!

정성스럽게 답변 달아주셔서 정말 감사해요..!!!

3개의 답변

0 추천
 
채택된 답변

http://daniel-codes.blogspot.com.au/2011/04/html-in-textviews.html
http://alvinalexander.com/android/how-show-html-string-in-android-textview-webview 
를 참고하시면 되겠네요. 원하시는 underline도 샘플에 있네요. 빈 공백에 스페이스라면
<u>&nbsp;&nbsp;&nbsp;</u> 글자 길이만큼 &nbsp;  태그 사이에 넣어주면 되겠네요.

spark (224,800 포인트) 님이 2016년 10월 22일 답변
0 추천
일단 작성자분이 문의하신 기능은 불가능 하구요~~!

정확히 원하시는 작업이 무언지 알아야 해결 방법을 드릴 수 있겠네요~~!
ThisPlus (46,920 포인트) 님이 2016년 10월 21일 답변
답변 감사드립니다

문제페이지를 만들고 있는데
영어 빈칸채우기 문제입니다(단어)
서버에서 ___빈칸 기준 앞,뒤 text를 받아오고 있습니다

예를들어,
Register early if you would ____ on project manage~. 일때
보기1.seminar
보기2.reason
보기3.policy
보기4.scene

사용자가 보기를 선택하면 ____ 빈칸안에
선택한 단어를 넣고 가운데 정렬 시키려고합니다
(밑줄은 안 사라지고 그 위에 텍스트를 가운데 정렬시키려고합니다.)

빈칸은 ___ 언더바인데 보기를 선택했을때 언더바의 길이가 보기보다
짧으면 안되기 때문에 무조건 길게 만들었습니다
(보기4개중 가장 긴 단어 기준으로 곱하기 배수 처리 해놨습니다)

처음에는 TextView 3개로 만들면 간단할거라 생각했는데..
(앞Text, __(언더바),뒤Text)

너무 초보적인 생각이었습니다 ㅠㅠ..
TextView 3개일때는 언더바의 위치와 width를 구해서
그 위에 동적으로 View를 생성해서 올려놓을려고 했는데 .
처음부터 불가능 생각이었습니다 ㅠ..

그래서 TextView 하나로 합친후에 방법을 찾아야되는데..
생각보다 쉽지 않네요 ..
0 추천
1. 텍스트뷰를 위와 같이 배치하는건 불가능합니다.

2. 텍스트뷰에서 각 글자들의 정확한 위치를 알아내는건 힘듭니다.

3. 커스텀뷰를 만들어서 해당 뷰에서 텍스트를 그려주고 위치를 파악하시면 됩니다.

   다만, 각각의 문자의 넓이를 구해서 줄바꿈해서 표시해줘야 하는등 약간 복잡해지지만,

   말씀하시는 기능을 하려면 이 방법외에는 없을 것입니다.
바램 (19,650 포인트) 님이 2016년 10월 21일 답변
답변 감사드립니다..

지금 2틀째 고민중인데 특별한 방법이 떠오르지 않네요..
tv.getPaint().getTextBounds(tv.getText().toString(), 0, tv.getText().length() , bounds);
를 사용해서 빈칸앞까지의 size를 구하고 디바이스 width값을 나눠주면서
위치를 잡아 보려고 했는데.. 될 것 같긴 한데 음절?이 길어졌을때
강제개행되고 이런 문제때문에 힘드네요..

최종적으로 안되면 말씀하신대로 해야될 것 같긴 한데
고민 되네요 ㅠㅠ..

답변 감사드립니다
...