web-dev-qa-db-ja.com

drawableLeftとdrawableRightの高さをTextViewの高さに制限する

次のTextViewがあります。

<TextView
    Android:drawableLeft="@drawable/loading"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:text="Updating Rates" />

結果は次のとおりです。

読み込み円のドロアブルを、その高さがテキストの高さと一致するように比例的に制限するにはどうすればよいですか?

また、可能であれば、テキストと画像の間にスペースを追加したいと思います。

26
Dzhuneyt

loadingを小さくするには、画像を小さくします。

または、RelativeLayoutを使用して、負荷をImageViewに入れてスケーリングします。

または、 _Android:drawablePadding_ (または setCompoundDrawablePadding() )を使用して、ドロアブルとテキストの間にパディングを追加できます。

_Android:drawablePadding="3dp"
_
22
JafarKhQ

私は解決策を見つけたと思うが、少し遅れて

Drawable drawable = getResources().getDrawable(R.drawable.s_vit);
drawable.setBounds(0, 0, (int)(drawable.getIntrinsicWidth()*0.5),(int)(drawable.getIntrinsicHeight()*0.5));
ScaleDrawable sd = new ScaleDrawable(drawable, 0, scaleWidth, scaleHeight);
Button btn = findViewbyId(R.id.yourbtnID);
btn.setCompoundDrawables(sd.getDrawable(), null, null, null); 
8
Ravi

Raviのソリューションはうまくいきましたが、一部のデバイスではドロアブルが消えていました。スケーリングを削除することでこれを修正しました。

    int bound = (int) (drawable.getIntrinsicWidth() * 0.5);
    drawable.setBounds(0, 0, bound, bound);
    b.setCompoundDrawables(drawable, null, null, null);
1
Dmide

より良いソリューションは、描画可能なフォルダーにXMLを作成し、このXMLに画像を追加し、scaleTypeを「fitXY」として維持することです。これで、このXMLをdrawableLeftとして作成できます。

0
Abdul Vajid