Ответ 1
Поздно, но им все для "лучше поздно, а потом никогда" Сегодня у меня был такой же вопрос, как выяснилось здесь: http://www.anddev.org/tutorial_buttons_with_niceley_stretched_background-t4369.html
Кто-нибудь может сказать мне, как изменить размер imageButton
, чтобы точно соответствовать изображению? Это код, который я пробовал, но изображение помещается в положение, которое я нахожу, используя android:scaleType
, но я не могу уменьшить размер imageButton
. Пожалуйста, помогите мне исправить эту проблему. Код, который я пробовал:
<ImageButton>
android:id="@+id/Button01"
android:scaleType="fitXY" // i have tried all the values for this attr
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:cropToPadding="false"
android:paddingLeft="10dp"
android:src="@drawable/eye"> // this is the image(eye)
</ImageButton>
Поздно, но им все для "лучше поздно, а потом никогда" Сегодня у меня был такой же вопрос, как выяснилось здесь: http://www.anddev.org/tutorial_buttons_with_niceley_stretched_background-t4369.html
android:background="@drawable/eye"
работает автоматически.
android:src="@drawable/eye"
был тем, что я использовал со всеми проблемами изменения размера изображения по ширине и высоте кнопки...
вы устанавливаете изображение с помощью свойства "src"
android:src="@drawable/eye">
используйте свойство "background
" вместо свойства "src
":
android:background="@drawable/eye"
как:
<ImageButton
android:id="@+id/Button01"
android:scaleType="fitXY"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:cropToPadding="false"
android:paddingLeft="10dp"
android:background="@drawable/eye"> // this is the image(eye)
</ImageButton>
Вероятно, вам придется изменить размер кнопки программно. Вам нужно будет явно загрузить изображение в свой метод onCreate() и изменить размер кнопки там:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageButton myButton = (ImageButton) findViewById(R.id.button);
Bitmap image = BitmapFactory.decodeResource(R.drawable.eye);
myButton.setBitmap(image);
myButton.setMinimumWidth(image.getWidth());
myButton.setMinimumHeight(image.getHeight());
...
}
Не гарантируется работа в соответствии с спецификациями для setMinimumX (поскольку ширина и высота все еще зависят от родительского представления), но он должен работать очень хорошо для почти каждой ситуации.
Попробуйте использовать ScaleType centerInside.
ScaleTypes не отображаются должным образом в дизайнере компоновки Eclipse, поэтому проверьте в своем рабочем приложении.
Вы пытались указать layout_width и layout_height следующим образом? Поскольку вы устанавливаете с помощью wrap_content, кнопка изображения расширяется до размера высоты и ширины исходного изображения.
<blink>
<ImageButton>
android:id="@+id/Button01"
android:scaleType="fitXY"
android:layout_width="80dip"
android:layout_height="80dip"
android:cropToPadding="false"
android:paddingLeft="10dp"
android:src="@drawable/eye">
</ImageButton>
</blink>
Вам не нужно использовать его с помощью атрибута src
Неправильно (изображение не будет соответствовать кнопке)
android:src="@drawable/myimage"
Правильный способ - использовать background atttribute
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/skin" />
где skin - это xml
skin.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- <item android:drawable="@drawable/button_disabled" android:state_enabled="false"/> -->
<item android:drawable="@drawable/button_pressed" android:state_pressed="true"/>
<!-- <item android:drawable="@drawable/button_focused" android:state_focused="true"/> -->
<item android:drawable="@drawable/button_normal"/>
</selector>
используя button_pressed.png и button_normal.png
Это также поможет вам создать вашу скиновую кнопку с четырьмя состояниями нажатой, нормальной, отключенной и сосредоточенной. Не забудьте сохранить одинаковые размеры всех png
Вы также можете установить фон прозрачным. Таким образом, кнопка похожа на вашу иконку.
<ImageButton
android:id="@+id/Button01"
android:scaleType="fitcenter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:cropToPadding="false"
android:paddingLeft="10dp"
android:background="@android:color/transparent"
android:src="@drawable/eye" />
Я думаю, вы уже решили эту проблему, и, как говорили другие ответы
android:background="@drawable/eye"
. Но я предпочитаю
android:src="@drawable/eye"
android:background="00000000" // transparent
и он тоже хорошо работает (конечно, прежний код установит изображение в качестве фона, а другой установит изображение как изображение). Но в соответствии с вашим выбранным ответом, я думаю, вы имели в виду 9-патч.