Nice programing

Android에서 서식있는 텍스트 편집기를 구현하고 계십니까?

nicepro 2021. 1. 8. 22:54
반응형

Android에서 서식있는 텍스트 편집기를 구현하고 계십니까?


Android에서 서식있는 텍스트 편집기 를 구현하는 데 좋은 옵션이 있는지 궁금합니다 . HTML 및 Javascript를 사용하는 웹 페이지에 포함 된 편집기가 아니라 Android 애플리케이션에서 사용할 수있는 서식있는 텍스트 편집기에 대해 이야기하고 있습니다.

내 요구 사항은 다음과 같습니다.

  • 기본 서식 (색상, 글꼴, 강조 표시, 굵게, 기울임 꼴, 밑줄 등)
  • 하이퍼 링크
  • 인라인 이미지
  • 글 머리 기호 목록 및 번호 매기기 목록
  • 인라인 테이블 (테이블 구조가 아닌 셀 내부의 내용 만 편집 가능)

보시다시피 이것은 Windows의 일반적인 RichEdit 컨트롤과 매우 유사합니다.

지금까지 제가 한 몇 가지 노력 (조사 및 프로토 타이핑)은 다음과 같습니다.

WebView 사용

WebView 컨트롤을 사용하여. 내용이 편집 가능 해지고 HTML이므로 대부분의 요구 사항을 충족 할 수 있다고 생각합니다. 그러나 몇 가지 문제가 있습니다.

  • (치명적) 텍스트 캐럿이 없습니다. 사용자는 입력 한 문자가 삽입 될 위치를 알 수 없습니다.
  • 화면상의 소프트 키보드는 기본적으로 표시되지 않습니다. 사용자가 키보드를 불러 오기 위해 메뉴 버튼을 길게 눌러야하는 트릭이 있습니다. 그러나 이것은 매우 나쁜 사용자 경험이라고 생각합니다. 또한 화면 레이아웃이 제대로 재정렬되지 않아 텍스트 삽입 지점이 키보드에 가려지는 경우가 있습니다.

EditText 사용

EditText 컨트롤을 사용해 보았습니다. 일정 수준의 서식있는 텍스트 편집 (색상, 글꼴, 굵게, 기울임 꼴, 밑줄, 인라인 이미지, 글 머리 기호 목록)을 지원하는 것 같습니다. 하지만 여전히 다음 요구 사항을 구현할 수있는 방법을 알 수 없습니다.

  • 글 머리 기호 (점, 원, 대시, 화살표, 별표 등)의 모양을 제어합니다.
  • 번호 매기기 목록 (1., 2., 3. 등)

BTW, 나는 거기에 여러 * Span 클래스가 있음을 보았지만 도움이 될 수 있는지 확실 하지 않습니다 ... 그리고 http://developer.android.com 은 그들에 대한 많은 유용한 정보를 제공하지 않습니다.


그렇다면 어떻게 Android에서 서식있는 텍스트 편집기를 구현할 수 있습니까? EditText를 확장하고 새 기능을 추가 할 수 있습니까? 아니면 처음부터 무언가를해야합니까-View를 확장하고 모든 것을 스스로 구현해야합니까? 나중 옵션 (보기 확장)의 경우 실제로 사용자 입력으로 캐럿을 이동하는 것은 언급하지 않고 텍스트 캐럿을 표시하고 깜박이는 방법도 모릅니다.

나는 지금 절망적이다 ... 힌트는?

감사!

-토니


( 편집 )

추가 조사 후 EditText를 확장하는 것이 최선의 방법 인 것 같습니다. 나는 어떻게 든 그 Span 클래스를 사용하는 방법을 알아 냈고 그것들을 사용 (확장)함으로써 대부분의 트릭을 할 수있을 것이라고 생각한다.

예를 들어 BulletSpan을 확장하고 drawLeadingMargin을 재정의하면 총알 모양을 제어 할 수 있습니다. LeadingMarginSpan을 확장하면 번호 매기기 목록에 도움이 될 것입니다.

테이블과 관련하여 내 초기 계획은 LineBackgroundSpan을 확장하고 drawBackground 재정의에서 모든 테이블 테두리를 그리는 것입니다. 그러나 여전히 표 셀의 모든 텍스트를 레이아웃하고 캐럿 이동 및 선택을 올바르게 처리하는 방법을 파악해야합니다. 제안?


방금 Apache 2.0 라이선스에 따라 리치 텍스트 편집기 구성 요소를 게시했습니다.

https://github.com/1gravity/Android-RTEditor

여기에 이미지 설명 입력


아마 모두 확장 할 것입니다 EditTextTableLayout그들의 대부분 사용하여 위 또는 적어도 말을 소스를 충분히 내가 만드는 데 필요한 변경 큰이 있다면.


다음을 수행 할 수 있습니까?

  1. EditText의 콘텐츠를 자신의 모델로 수동으로 보유합니다 (예 : 콘텐츠 문서와보기 속성을 별도의 엔티티로 분리 및 유지 관리).
  2. 텍스트가 아닌 문자 (예 : 특정 속성을 가진 글 머리 기호)를 처리하는 콘텐츠 문서 (모델의 일부) 부분에서 사용자 지정 레이아웃을 수행하도록 렌더링 (또는 그리기 메서드)을 재정의합니다.

나에게 레이아웃에 대해 고민해야한다면 처음부터 직접 작성하는 것이 더 나은 것 같습니다. 내가 기억하는 것에서 편집 텍스트 (및 리치 텍스트 편집기)는 데이터가 순수한 텍스트 인 모든 곳에 적합합니다.


There is an open source EditText rich text editor called android-richtexteditor but the code was inexplicably deleted in r5. The code is still there in r4; just use svn to check out r4 or earlier to access it. The code appears to support italics, underline, color picker, text size, and more.

Also answered in these questions: 1, 2


You can make use of any of the following libraries:-

https://github.com/commonsguy/cwac-richedit

https://github.com/chinalwb/Android-Rich-text-Editor

https://github.com/wasabeef/richeditor-android

https://github.com/irshuLx/Android-WYSIWYG-Editor


Extend from EditText is a best choice for you, it support CharacterSpan and ParagraphSpan.

Google Play에서 내 앱보기 : https://play.google.com/store/apps/details?id=com.hly.notes


이 체크 오픈 소스 워드 프레스 모바일 android.It은 매우 유망하고있다 신청 RichTextEditor는 EDITTEXT를 기반으로합니다.

여기 에서 소스를 다운로드 할 수 있습니다.

감사

참조 URL : https://stackoverflow.com/questions/4283755/implementing-a-rich-text-editor-in-android

반응형