Warning 解消法

【Android Studio】paddingLeftのWarning解消法

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

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

  1. Consider adding android:paddingStart="10dp" to better support right-to-left layouts
  2. 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 の追加を提案されています。

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

この記事では、以下のように TextView に paddingLeft を指定していると仮定して進めていきます。

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

 

minSdkVersion が 17 以上か未満かで対応方法が異なるので、プロジェクトに合わせてお試しください。
 
 


 

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 が出た場合はお試しください
 

ABOUT ME
Sara
Sara
「わかりやすく・シンプル」をモットーに、スマホアプリ・ウェブアプリの作り方を紹介します。 独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています🙂
独学は難しそうと感じたら

 
独学でプログラミングを勉強するのは難しそう、効率的にプログラミングを学びたいという方はオンラインスクールがオススメです。

オンラインスクールを選ぶときのポイント

  • 無料体験があること
  • 個別サポートがあること

自分にあったスタイルを見つけるために、無料体験のご利用をオススメします。(無料体験後に自分には合わないなと感じたらハッキリ断ってしまって問題ありません。)
 
個別サポートもプログラミング学習に挫折しないために重要なポイントです。エラーや困った時にすぐに個別対応をしてくれるスクールを利用して下さい。

ここでは3つのオンラインスクールを紹介します。
全て無料体験がありますので、ぜひ自分に合ったスクールを見つけてみて下さい????
 

1. TechAcademy(テックアカデミー)

オンライン完結で勉強できるスクールで、コースがとても充実しています。チャットで質問すればすぐに回答を得られるのが一番のおすすめポイントです。
オリジナルのサービスやアプリの開発もサポートしてくれるので、開発したいものが決まっている人にもオススメです。

無料体験はこちら

2. CodeCamp(コードキャンプ)

一対一で受講できる個別指導のプログラミングスクールです。
Webデザイン・Webサービス開発・アプリ開発などを幅広く学習することができます。
マンツーマンなので自分のペースで学習できて、質問もその都度できるのがメリットです。

無料体験レッスンはこちら

3. Treehouse

英語でも良い、英語とプログラミングを同時に勉強したいという方は Treehouse がオススメです。月25ドルで始めることができて、たくさんのプログラミング言語を学ぶことができます。
個別サポートはありませんが、掲示板が充実しています。ほとんどの場合、質問してから30分程度で回答を得ることができます。

7日間の無料体験はこちら

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA