Кажется, что x-позиция drawableLeft
зависит от заполнения слева и позиции x-scroll: source .Так что это заведомо поведение.Я думаю, что вам лучше использовать классы SpannableString
и ImageSpan
, чтобы отобразить изображение слева от текста кнопки:
final SpannableStringBuilder builder = new SpannableStringBuilder("\uFFFC");
builder.setSpan(new ImageSpan(getResources.getDrawable(R.drawable.your_drawable)),
0, builder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.append(getString(R.string.your_string));
textView.setText(builder);
Также вы можете использовать метод Html.fromHtml()
для построения Spannable
из HTML.Но в этом случае вам нужно реализовать интерфейс Html.ImageGetter
для загрузки изображений из ресурсов.
РЕДАКТИРОВАНИЕ : есть способ сделать виджет в виде кнопки, используя только XML:
<LinearLayout
android:layout_width="200dip"
android:layout_height="wrap_content"
android:gravity="center"
android:clickable="true"
android:focusable="true"
android:background="@android:drawable/btn_default">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:duplicateParentState="true"
android:src="@drawable/button_icon"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:duplicateParentState="true"
android:text="@string/button_text"/>
</LinearLayout>