Warning 解消法

【Android Studio】paddingLeftのWarning解消法

Sara

 
この記事では xml ファイルで TextView などに paddingLeft を指定した時に出る Warning の解消法を紹介しています。 

この Warning が表示されている個所にカーソルを合わせると

  • Consider adding android:paddingStart=”10dp” to better support right-to-left layouts
  • When you define paddingLeft you should probably also define paddingRight for right-to-left symmetry

と表示されると思います。

これは「Right to Left レイアウトの使用を考えてください」という Warning で、 RTL Layout Support という API が追加されてから出るようになりました。 

RTL は Right To Left(右から左)という意味で、ヘブライ語やアラビア語など右から左に読む言語に対応するためのものです。

API 17 以上の場合

    • paddingLeft → paddingStart
    • paddingRight → paddingEnd

に変更されたので、1つ目のメッセージでは paddingStart 属性の追加を提案されています。

また、RTL Layout では左右両方の値を指定することが推奨されているので、2つ目のメッセージでは paddingLeft だけでなく paddingRight も指定するよう提案されています。

この記事では TextView に paddingLeft を指定していると仮定して Warning を消す方法を紹介します。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    android:paddingLeft="10dp" />

minSdkVersion を確認する

まずはじめにプロジェクトの minSdkVersion を確認します。

Android Studio 画面左側のプロジェクト構造から Gradle Scripts → build.gradle (Module:app) を開きます。

8行目あたりに minSdkVersion があります。

ここからは

  1. minSdkVersion が 17 以上の場合
  2. minSdkVersion が 16 以下の場合

の順番で Warning の解消法を紹介していますので、minSdkVersion に合わせて進めてください。

minSdkVersion が 17 以上の場合

minSdkVersion が 17 以上の場合は、まず paddingLeft を paddingStart に変更します。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    android:paddingStart="10dp" />

paddingRight を指定している場合は、paddingRight を paddingEnd に変更します。

paddingStart の上にカーソルを合わせると When you define paddingStart you should probably also define paddingEnd for right-to-left symmetry というメッセージが表示されます。

paddingStart と合わせて paddingEnd も指定することを提案している Warning なので

  1. Warning を無視する
  2. paddingEnd を指定する

のどちらかの方法で消していきます。

方法① Warning を無視する

アプリがヘブライ語やアラビア語に対応していない場合は、Warning を無視しても問題ありません。

TextView 要素に tools:ignore=”RtlSymmetry” を追加します。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    android:paddingStart="10dp"
    tools:ignore="RtlSymmetry"/>
一括指定する方法

複数の要素に paddingStart を指定している場合、全ての要素に tools:ignore=”RtlSymmetry” を書くのが面倒なことがあります。

その場合はルート要素に一括指定することもできます。

方法② paddingEnd を指定する

はじめに書いたように RTL Layout では左右両方の値を指定することが推奨されているので、paddingEnd を指定します。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    android:paddingStart="10dp"
    android:paddingEnd="0dp"/>

minSdkVersion が 16 以下の場合

Warning の解消方法は

  1. 関連する Warning を全て無視する
  2. paddingStart を指定して、RtlSymmetryを無視する
  3. paddingLeft, paddingStart, paddingRight, paddingEnd を指定する

の3つの方法があります。

方法① 関連する Warning を全て無視する

アプリがヘブライ語やアラビア語に対応していない場合は、Warning を無視しても問題ありません。

paddingLeft を指定している要素に tools:ignore=”RtlHardcoded,RtlSymmetry” を追加します。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    android:paddingLeft="10dp"
    tools:ignore="RtlHardcoded,RtlSymmetry" />
一括指定する方法

複数の要素に paddingLeft を指定している場合、全ての要素に tools:ignore=”~” を書くのが面倒なことがあります。

その場合はルート要素に一括指定することもできます。

方法② paddingStart を指定して、RtlSymmetryを無視する

API 17 以上では paddingLeft の代わりに paddingStart を使用するので、paddingStart も合わせて指定します。値は paddingLeft と同じにします。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    android:paddingLeft="10dp"
    android:paddingStart="10dp"/>

RTL Layout では左右両方の値を指定することが推奨されていますが、右から左へ読むテキストがない場合は無視することができます。

TextView 要素に tools:ignore=”RtlSymmetry” を追加します。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    android:paddingLeft="10dp"
    android:paddingStart="10dp"
    tools:ignore="RtlSymmetry"/>

方法③ paddingLeft, paddingStart, paddingRight, paddingEnd を指定する

この方法では paddingLeft に合わせて paddingRight も指定します。

また API 17 以上では、paddingLeft の代わりに paddingStart を、paddingRight の代わりに paddingEnd を使う必要があるので、paddingStart と paddinEnd も合わせて指定します。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    android:paddingLeft="10dp"
    android:paddingStart="10dp"
    android:paddingRight="0dp"
    android:paddingEnd="0dp"/>

まとめ

以上が paddingLeft を指定した時に出る Warning の解消法でした。

Warning はエラーとは違って、プログラムの動作自体に影響が出るわけではありませんが、全て解消しておいた方がコードがスッキリとして気持ちが良いものです。

Warning が出た場合はお試しください。

Subscribe
Notify of
0 Comments
古い順
新しい順 人気順
Inline Feedbacks
View all comments
ABOUT ME
Sara
Sara
運営者
書籍やオンライン講座でプログラミングを勉強してフリーランスのプログラマーになりました。
このサイトでは「わかりやすく・シンプル」をモットーに、プログラミングの基礎からアプリ開発まで紹介します。
独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています。
主な使用言語:Java / Kotlin / PHP
>> 詳しいプロフィール
>> お問い合わせ
>> 書籍を出版しました!
本格的に学びたい方へ

Code for Fun プログラミング講座

POINT 01

動くコード

プログラミングの文法を学んでも、そこからどのようにアプリ開発ができるのかイメージが湧きにくいものです。

Code for Fun のプログラミング講座では、ゲームやカレンダーなどアプリとして機能するものを作りながらプログラミングを学ぶことができます。

POINT 02

自分のペースで

オンライン講座なので、ご自身のペースで学習を進めて頂けます。

受講期限もないので、いつでも前のレッスンに戻ることができるので安心です。

お申し込みしたその日からすぐに始めることができます。

POINT 03

個別サポート

プログラミング学習では、エラーが起きることはよくあります。そんな時はお気軽にお問い合わせください!

コメント欄またはメールによるサポートを回数無制限でご利用頂けます。(*講座に関連するご質問のみ対応)

今すぐ無料でお試し

0
この記事にコメントするx
記事URLをコピーしました