Android добавить изображение в кнопку
Я хочу добавить изображение к Button
(не imagebutton
, поскольку конкретная кнопка может содержать текст или изображение; плюс imagebutton имеет ту же проблему), сохраняя при этом оригинальную кнопку в стиле android. Итак, добавление android:background
в XML не режет его, так как это удалит кнопку android по умолчанию с закругленными углами и т. д. (android.R.drawable.btn_default)
возможно ли это каким-либо образом?
Я думаю, что один из способов-сделать 9patch
картинки для нажатой кнопки (одна для и один для вниз) и onTouch Action_DOWN
сделать многослойный фон drawable и положить это на кнопку, и делать то же самое, но с другим 9patch
на onTouch Action_UP
, но я думаю, что это существенно снизит производительность приложения, так как для этого потребуется довольно много чтения ресурсов и слияния слоев для всех кликов кнопок (и для моего приложения это будет довольно много). Правильно ли то, что я говорю выше?
EDIT: я не могу объявить Источник изображения в XML, потому что я получаю изображения из веб-службы, поэтому все можно поместить на кнопки, но это должно произойти программно.
5 ответов
Это можно сделать с помощью android:drawableTop
, android:drawableBottom
, android:drawableLeft
, android:drawableRight
атрибуты в вашем макете.XML.
<Button
android:layout_width="0dp"
android:layout_weight="1"
android:background="@drawable/home_button"
android:drawableLeft="@android:drawable/ic_menu_edit"
android:drawablePadding="6dp"
android:gravity="left|center"
android:height="60dp"
android:padding="6dp"
android:text="AndroidDhina"
android:textColor="#000"
android:textStyle="bold" />
дополнительная информация http://androiddhina.blogspot.in/2015/09/how-to-add-image-inside-button.html
установите ниже свойство кнопки для отображения изображения с текстом, используя это свойство изображение отображается над текстом.
<Button android:drawableTop="@drawable/ic_launcher"/>
настройки изображения :
btn.setBackgroundResource(R.drawable.ic_launcher);
настройки текста :
btn.setText("My Button");
код :
private Drawable buttonDrawable;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button btn=(Button) findViewById(R.id.button1);
buttonDrawable=btn.getBackground();
//Setting the image.
btn.setBackgroundResource(R.drawable.ic_launcher);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
/*Removing image and setting text*/
btn.setBackgroundDrawable(buttonDrawable);
btn.setText("My Button");
}
});
}
Вы можете создать свой собственный drawable с несколькими состояниями и установить, что в фоновом режиме
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false"
android:drawable="@drawable/selected" />
<item android:drawable="@drawable/normal" />
</selector>
рисунки могут иметь закругленные углы, как так.
<corners android:topLeftRadius="5dp" android:topRightRadius="5dp"
android:bottomLeftRadius="0.2dp" android:bottomRightRadius="0.2dp"/>