본문 바로가기

Develop/Android

[CustomView] AppCompatEditText 를 이용한 HashTag 입력창

반응형

최근 SNS 기능도 넣자고 하신다... SNS와는 거리가 멀던 서비스라서 사막에서 건물 짓듯 처음부터 하나씩 만들어야 했다.

그렇기에 본격적으로 CustomView를 만들어 재사용을 하려고 만들기 시작하였다.

 

그중 하나인 HashTag 관련한 View이다.

설정한 글자의 개수, 태그 개수 내에서 글자를 적고 띄어쓰기나 개행을 하면 자동으로 #이 붙으면서 글자가 입력되는 CustomEditView이다.

 

AppCompatEditText의 메소드 중에는 onTextChanged라는 메소드가 있는데 이번 라이브러리의 중요한 키포인트다.

이름에서 알 수 있듯 이 메소드는 Text입력을 감지하는데 띄어쓰기 또는 개행 그리고 글자의 수 등을 체크하여 #을 붙여주는 원리이다.

나는 코드를 작성할 때 엄청난 기능도 리모컨 하나로 조작하는 편리함을 추구하는데 이 라이브러리도 사용자가 실제로 필요한 부분만 호출하면 되도록 구현하려고 노력하였다.

1
2
3
4
5
6
7
8
9
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:itemMaxLength="5"                               <-Length of tag
        app:itemMaxCount="5"                                <-Number of tags
        app:autoPoundSign="true"                            <-Enter '#' automatically by blanking.
        app:itemMaxLengthOverMent="The tag is too long." 
        app:itemMaxCountOverMent="Too many tags."
        />
 
 
  • itemMaxLength : 태그 한 글자당 최대 개수
  • itemMaxCount : 전체 태그의 개수
  • autoPoundSign : 자동으로 #을 추가하여 해시태그입력 기능 스위치
  • itemMaxLengthOverMent : 한 글자당 최대 개수를 넘겼을 경우 Toast로 노출되는 멘트
  • itemMaxCountOverMent : 태그 개수가 많을 경우 Toast로 노출되는 멘트
1
2
3
4
5
6
7
8
9
    HashTagEditTextView tagTextView;
    @Override
    protected void onCreate(Bundle savedInstanceState)
 {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ...
        String[] hashTagArray = tagTextView.getInsertTag();
        ...
    }
 
  • getInsertTag() : 입력된 태그를 배열로 추출

 

마찬가지로 Github에 공유해 뒀으며 Gradle 배포도 되어있다.

 

aqoong/HashTagEditTextView

[Android CustomView] HashTag Edit TextView. Contribute to aqoong/HashTagEditTextView development by creating an account on GitHub.

github.com

 

※ 코드로도 maxSize를 변경하게 해야하지만 현재 배포된 버전에는 빠져있다. 곧 추가해야겠다.

반응형