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

만든앱에 watson 챗봇 기능을 넣는데 이부분만 에러가뜹니다...

0 추천

 

 

 

 

 

 

 

 

 

 

 

 

도와주십시오...ㅜㅜ

최고가되고싶은개발자 (400 포인트) 님이 2020년 11월 3일 질문

1개의 답변

0 추천

저는 폰트 에러는 없는데. Github에 있는 왓슨앱은 코드가 오래된 것 같네요.  폰트는 앱에 있는 코드를 사용하지마시구요, 안드로이드에서 제공하는 커스텀폰트 기능을 사용하세요. 여기에 링크가 있구요.

https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml

간단히 방법을 알려드리면,

resource 폴더 밑에 font폴더를 만드세요(쉬프트키 두번 누르시면 액션입력 창이 나옵니다. 여기에 font라고 치시면 관련 메뉴가 나옵니다.).

assets/Montserrat-regular.ttf 를 만드신 font 폴더로 옮기시고 이름을 montserrat_regular.ttf롤 변경하세요. 안드로이드 리소스파일은 소문자와 언더스코어만 인식하니까요?

font폴더에 마우스 오른쪽 버튼 누르면 폰트리소스 만들기 메뉴가 있을 거예요. 폰트리소스를 만들고 다음 내용을 넣으세요.

fonts.xml (다른 이름도 상관없습니다.)

<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android">
    <font
        android:fontStyle="normal"
        android:fontWeight="400"
        android:font="@font/montserrat_regular" />
</font-family>

그다음에 기존 폰트 설정 코드를 지우세요.

//삭제하세요.
String customFont = "font/montserrat_regular.ttf";
Typeface typeface = Typeface.createFromAsset(getAssets(), customFont);
inputMessage.setTypeface(typeface);

 

그리고 content_chat_room.xml을 여신 다음, 아랫처럼 폰트설정을 해주세요.

<EditText
            android:id="@+id/message"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginStart="16dp"
            android:layout_marginEnd="10dp"
            android:layout_weight="3"
            android:background="@null"
            android:fontFamily="@font/montserrat_regular"
            android:hint="@string/what_s_on_your_mind"
            android:lines="1"
            android:paddingStart="10dp"
            android:inputType="text" />

이게 다입니다. 실행해보시면 폰트가 잘 적용되었을 겁니다. 혹시 그래도 에러 나시면 에러메세지를 이미지 말고 텍스트로 캡쳐해 주세요. 올려주신 이미지는 선명하지가 않아 정확한 메세지를 읽기가 힘들어요.

spark (227,530 포인트) 님이 2020년 11월 3일 답변
굳이 해당 폰트가 필요 없으시면 위에서 말씀드린 폰트 설정 관련 코드를 지우셔도 됩니다.
감사합니다.... 진짜감사합니다....!

혹시 speech to text 부분만없앨수있나요....

스페인어로 말해서 너무 정신이없습니다....
new SayTask()가 있는 부분을 주석처리하거나 지우세요.
이 부분은 별도의 처리 클래스로 빼시면 좀 더 유연하게 처리할 수 있긴합니다만, 일단 해당 코드를 없애보세요.
...