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-патч.