168

新しいLintツールを自分のコードに置きます。それは多くの良い提案を思い付いたが、私は理解できない。ImageViewとTextViewを含むLinearLayoutの代わりに複合ドロアブルを使用するには

このタグとその子は、一と化合描画可能

問題に置き換えることができる:現在のノードが、化合物ドローアブルを用いてのTextViewで置き換えることができるかどうかをチェック。 ImageViewのが含まれているとのTextViewをより効率的に、ここで

そして、描画可能な化合物として取り扱うことができる

AのLinearLayoutは私のレイアウトである

<LinearLayout 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
android:layout_centerInParent="true"> 

<ImageView 
    android:id="@+id/upImage" 
    android:layout_width="20dp" 
    android:layout_height="20dp" 
    android:layout_gravity="center_vertical" 
    android:scaleType="centerInside" 
    android:src="@drawable/up_count_big"> 
</ImageView> 

<TextView 
    android:id="@+id/LikeCount" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="2dp" 
    android:layout_marginBottom="1dp" 
    android:textColor="@color/gray" 
    android:textSize="16sp" 
    android:layout_gravity="center_vertical"> 
</TextView> 
</LinearLayout> 

誰かが作る方法の具体的な例を提供することができますこの場合、化合物引出し可能か?

+4

私が通常無効にするチェックの1つは、誤検出のためです。このように 'TextView' /' ImageView'コンボをすべて置き換えることはできません。 –

+0

@RichardLeMesurierイメージのサイズを定義する場合は、カスタム表示を使用できます。これにより、視界が明るくなります。私の答えを見てください: http://stackoverflow.com/a/31916731/2308720 – Oleksandr

+0

@Alex多くの場合、私の経験で私はよく私が考えていることを回避するためのカスタムビューを作成するのは価値がないバグのリントチェックであること。 –

答えて

224

TextViewには、左、上、右、および下のそれぞれに1つずつ、4つの複合ドロアブルが付属しています。

あなたの場合、LinearLayoutImageViewはまったく必要ありません。ただandroid:drawableLeft="@drawable/up_count_big"TextViewに追加してください。

詳細はTextView#setCompoundDrawablesWithIntrinsicBoundsを参照してください。これに追加するには

+26

は必ずしもあなたのリンクが動的画像の例を示しているためではありません。その場合、 'ImageView'を使用する方がまだ簡単かもしれません。「 –

+8

」と置き換える必要がありますが、画像とテキストの間にスペースを作るにはどうすればいいですか? –

+6

@Hitesh Dhamshaniya、DrawablePaddingプロパティをXMLまたはコードで使用すると警告が表示されます。 – Snicolas

14

のためであれば何らかの理由でコードを追加する必要があります。

mTextView.setCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom); 
、トップを残し

は、右下のドローアブルが

+0

上記のAPI 17を必要とする – Puni

+0

API 1以降の[documentation](https://developer.android.com/reference/android/widget/TextView.html)の状態 –

+0

このリンクを参照してください[documentation](https ://developer.android.com/reference/android/widget/TextView.html#setCompoundDrawablesRelativeWithIntrinsicBounds(android.graphics.drawable.Drawable、a​​ndroid.graphics.drawable.Drawable、a​​ndroid.graphics.drawable.Drawable、a​​ndroid.graphics.drawable .Drawable)) – Puni

2

あなたは一般的な化合物描画可能な実装を使用することができますが、あなたは描画可能な使用のサイズを定義するには、このライブラリを必要とします。ここではhttps://github.com/a-tolstykh/textview-rich-drawable

は小さいです使用例:

<com.tolstykh.textviewrichdrawable.TextViewRichDrawable 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Some text" 
     app:compoundDrawableHeight="24dp" 
     app:compoundDrawableWidth="24dp" /> 
関連する問題