티스토리 뷰

  TextView에대한 효과들을 알아보겠습니다. 먼저 실습을 위해서 긴 Text를 하나 만들겠습니다.



  화면을 보시면 길게 Text를 준 만큼 TextView에서 쭉 나열되어 있는것을 보실 수 있습니다. 이제 최대 줄 수를 4 줄로 줄여보겠습니다. xml 에서 다음을 추가해 보겠습니다.


1
android:maxLines="4"
cs



  maxLine 4를 적용하니 4 줄이 적용이 되었지만!!! '보전하세' 에서 끊겨 버리고 뒷 글이 나오지 않는 것을 볼 수 있습니다. 처음보는 사람이라면 애국가가 2절 까지 있는줄 알겠네요ㅎㅎ 이러한 일을 방지하기 위해서 뒤에 글이 더 있다는 표시를 남겨주어야 하는데요 바로 다음의 코드를 사용합니다. 흔히 글이 끝에 계속된다는 의미로 '...'을 넣어주는데 바로 그 역활을 하는 효과입니다.


1
android:ellipsize="end"
cs


  ellipsize에 end를 주면 맨 뒤에 '...'이 생긱는 것을 보실 수 있습니다. ellipsize에 줄 수 있는 건 'start'와 'middle'도 있는데요 이는 한 줄로 표현할 때만 사용하 실 수 있습니다. 안드로이드 어플 내에서는 한 줄로 표현해야할 일들이 많습니다. 공지사항을 제목을 나열하거나 게시글의 제목을 나열할 때는 거의다 한 줄을 사용하지요!! 따라서 MaxLine으로 한 줄로 표현할 수 도있지만 많이 사용되므로 안드로이드에서는 한 줄만을 위한 정의를 만들어 놓았습니다.


1
android:singleLine="true" //아래의 예제들은 singeLine으로 1줄을 만들었을 때만 작동합니다
cs


  그리고 이렇게 한 줄로 만든 뒤에 줄 수 있는 효과들이 많습니다.(한 줄로 강제적으로 줄여 버렸으니 이를 위한 효과가 존재하는것 같습니다.) 일단 위에서 언급했던 'start'와 'middle'을 사용해 보겠습니다.



  'start'는 앞의 내용을 다 잘라주고 한 줄에 맞추어서 뒤의 내용을 출력해 주고 'middle'은 처음과 끝 부분을 보여주는 것을 불 수 있습니다. 하지만 저렇게 짤리는것 없이 한 줄로 다 보여줄 수는 없을까??? 란 궁금중이 생길 수 있는데요 가능합니다!! 흐르는 text를 이용하시면 됩니다. 이것도 ellipsize의 옵션에 있습니다.


1
2
android:ellipsize="marquee"
android:marqueeRepeatLimit="1"
cs

  ellipsize의 값으로 'marquee'를 주고 'marqueeRepeatLimit'의 값으로 '1'을 주었습니다. 'marqueeRepeatLimit'의 역활은 흐르는 text를 몇 번 반복할 것이냐입니다. 지금은 '1'을 주었으니 한 번 반복할 것입니다. TextView에서의 옵션 설정은 다 끝냈습니다. 이제 시작이란 신호만 주면 되는데요! 이 신호는 Activity 쪽에서 주게 됩니다.

1
text.setSelected(true);
cs


  저는 TextView text; 로 해논 상태라서 text..setSelected를 사용하였습니다. 이 상태에서 true 값을 주면 흐르게 되고 false 값을 주면 흐르지 않게 됩니다. 버튼을 눌러 두 개를 번갈아 가게 만들어 보았습니다. 결과를 확인해 보겠습니다.



  잘 되는 것을 보실 수 있습니다! 효과를 위한 예제이므로 Main 코드와 xml에서의 코드를 같이 올리겠습니다. 버튼 이벤트에 관해 잘 모르시는 분은 다음의 게시물을 보시면 됩니다. '버튼(Button) 이벤트 사용법 2가지!'


MainActivity 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    Button btn;
    TextView text;
    Boolean set = true;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        text = (TextView) findViewById(R.id.textView);
        btn = (Button) findViewById(R.id.button);
        btn.setOnClickListener(this);
    }
 
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button
                if(set == true) {
                    text.setSelected(set);
                    set = false;
                }
                else {
                    text.setSelected(set);
                    set = true;
                }
                break;
        }
    }
}
cs


main_activity.xml 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="GO"
        android:id="@+id/button"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="90dp" />
 
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="100dp"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="1"
        android:singleLine="true"
        android:id="@+id/textView"
        android:text="1절 동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세. 무궁화 삼천리 화려강산 대한 사람, 대한으로 길이 보전하세  2절 남산 위에 저 소나무, 철갑을 두른 듯 바람서리 불변함은 우리 기상일세. 무궁화 삼천리 화려강산 대한 사람, 대한으로 길이 보전하세"
        android:layout_centerVertical="true"
        android:layout_alignParentEnd="true" />
cs


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday