ImageButton в Android
может ли кто-нибудь сказать мне, как изменить размер imageButton, чтобы точно соответствовать изображению..Это код, который я пробовал, но изображение помещается в положение, которое я определяю с помощью
android:scaleType
но я не могу уменьшить размер imageButton, pls помогает мне в исправлении этой проблемы...Код, который я пробовал ...
<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>
9 ответов
немного поздно, но я все для "Лучше поздно, чем никогда" У меня был тот же вопрос сегодня, нашел его объясненным здесь: 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">
использовать "" свойства "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.
типы масштабирования не отображаются должным образом в Eclipse Layout designer, поэтому проверьте в запущенном приложении.
вы пытались дать 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 attribute
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/skin" />
здесь кожа является xml
кожи.в 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
Это также поможет вам в создании вашей ободранной кнопки с 4 состояниями нажатой , нормальной , отключенной и сфокусированный. Не забудьте сохранить одинаковые размеры всех pngs
вы также можете установить фон прозрачный. Так кнопка выглядит как значок.
<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-патч.