AndroidStudio에서 화면에 표시할 문자 등록

AndroidStudio에서 화면 표시에 사용할 문자 등록



새 애플리케이션 만들기에서 빈 활동을 선택한 후
activity_main.xml에 버튼을 추가합니다.

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/tvMain"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/btMain"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="Button"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

이 시점에서 구성 요소 트리에 경고가 표시됩니다.
표시 내용이 영어이지만 요점은 버튼에 표시하는 문자 Button 은, 여기가 아니고 @string 자원에 써 주세요라고 하는 것 같다.

문자열 등록



그래서 @string 리소스에 써 보자.


프로젝트 트리에서
app -> res -> values ​​-> strings.xml
strings.xml이 @string 리소스가되므로 열면

strings.xml
<resources>
    <string name="app_name">[[アプリケーションのタイトル]]</string>
</resources>

되어 있다.
이대로라면 일본어를 사용할 때 문제가 되므로 앞에 을 추가한다.

strings.xml
<?xml version="1.0" encoding="utf-8" ?>
<resources>
    <string name="app_name">[[アプリケーションのタイトル]]</string>
</resources>

그런 다음 버튼에 표시할 이름을 등록합니다.

strings.xml
<?xml version="1.0" encoding="utf-8" ?>
<resources>
    <string name="app_name">[[アプリケーションのタイトル]]</string>
    <string name="btName">これはボタンです</string>
</resources>

이제 레이아웃의 activity_main.xml을 열고

activity_main.xml
省略
    <Button
        android:id="@+id/btMain"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="@string/btName"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


android:text= 뒤의 부분을 @string/btName 으로 변경합니다.

이제 경고는 사라지고 버튼의 이름은 지정한 대로 표시됩니다.
TextView의 text에서는 왠지 경고가 나오지 않습니다만, 똑같이 이쪽도 고쳐 둡시다.

문자열 목록 등록



문자열뿐만 아니라 문자열 목록 (배열)도 등록할 수 있습니다.

strings.xml
<?xml version="1.0" encoding="utf-8" ?>
<resources>
    <string name="app_name">[[アプリケーションタイトル]]</string>
    <string-array name="lvEntries">
        <item>1個目</item>
        <item>2個目</item>
        <item>3個目</item>
    </string-array>
</resources>

이제 문자열 목록 lvEntries가 완성되었습니다.
그런 다음 화면 레이아웃 activity_main.xml은 버튼을 지우고 ListView를 추가합니다.

activity_main.xml
省略
    <ListView
        android:id="@+id/lvMain"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:entries="@array/lvEntries"/>


ListView의 android:entries에 @array/lvEntries를 지정하면 문자열 목록이 ListView로 로드됩니다.

string.xml에 쓰는 이유



직접 레이아웃 파일의 activity_main.xml에 써도 좋다고 생각합니다만, 굳이 strings.xml에 써 참조 시키도록 하고 있는 것은 다른 나라의 언어로 변환하기 쉽게 하기 위해서일 것입니다.

여러 파일의 여러 위치에 쓰여진 표시 요소를 수정하는 것보다는 strings.xml만을 수정하는 것이 빠르기 때문입니다.

하지만 표시하는 문자는 프로그램에서 변경하거나 하는 것은? 라고 하는 것으로 프로그램으로부터도 참조해 봅시다.

MainActivity.kt
        val btnName = R.string.btName
        val lvEntries = R.array.lvEntrys

갑자기 R이 나왔지만 이것은 자원을 참조 할 때의 결정 불평입니다.
이렇게 하면 표시와 관련된 문자열을 등록해 두면 장래에 편해질 것입니다.

위에서는 리소스 ID 만 얻을 수 있으므로이를 기반으로 실제 값을 참조하려면

MainActivity.kt
        val btnName = resources.getString(R.string.btName)
        val lvEntries = resources.getStringArray(R.array.lvEntrys)

이렇게 됩니다.

마지막으로



가까이서 만들 때는 일일이 사용하는 문자열을 등록할 수 없습니다.
등록해도 사용하지 않는 경우가 있다고 생각합니다.
어떻게 사용하는지는 모르겠지만, 우선은 직접 문자를 써도 어쩔 수 없는 세계일지도 모릅니다. 침착하고 나서 등록하고 있는 문자를 채용하도록 변환하면 편한 것일지도 모릅니다.
그렇게 말해두고 후회할 것 같네요.

좋은 웹페이지 즐겨찾기