2013-11-24 5 views
6

Я хочу создать экран, содержащий верхнюю панель и изображение. Я использую TextView для верхней панели и ImageView для изображения. Я хочу установить дополнение только к представлению изображения. Мой xml приведен ниже. Действие дополнения не работает. Может ли кто-нибудь объяснить, почему и что делать?Прокладка в ImageView не работает

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/background" > 

    <TextView android:id="@+id/topBar" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:text="@string/home" 
     android:textSize="20sp" 
     android:textColor="#ffffff" 
     android:textStyle="bold" 
     android:shadowColor="#000000" 
     android:shadowRadius="1" 
     android:shadowDy="-1" 
     android:gravity="center" 
     android:background="@drawable/navBar"/> 

    <ImageView android:id="@+id/image" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingLeft="10dp" 
     android:paddingTop="10dp" 
     android:paddingRight="10dp" 
     android:paddingBottom="10dp" 
     android:layout_below="@+id/topBar"   
     android:background="@drawable/image"/> 

</RelativeLayout> 

ответ

9

Вы должны использовать layout_margin вместо padding поэтому он должен быть следующим:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@drawable/background" > 

<TextView android:id="@+id/topBar" 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:text="@string/home" 
    android:textSize="20sp" 
    android:textColor="#ffffff" 
    android:textStyle="bold" 
    android:shadowColor="#000000" 
    android:shadowRadius="1" 
    android:shadowDy="-1" 
    android:gravity="center" 
    android:background="@drawable/navBar"/> 

<ImageView android:id="@+id/image" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="10dp" 
    android:layout_marginTop="10dp" 
    android:layout_marginRight="10dp" 
    android:layout_marginBottom="10dp" 
    android:layout_below="@+id/topBar"   
    android:background="@drawable/image"/> 

и вы можете указать 1 layout_margin для всех направлениях таким образом, вместо того, чтобы использовать

android:layout_marginLeft="10dp" 
android:layout_marginTop="10dp" 
android:layout_marginRight="10dp" 
android:layout_marginBottom="10dp" 

Вы можете использовать:

android:layout_margin="10dip" 

надеюсь, что это то, что вы ищете. дайте мне обратную связь в противном случае;)

обновление

вы можете установить cropToPadding также:

<ImageView 
... 
    android:cropToPadding="true" 
    android:padding="15dp" 
    android:scaleType="centerInside" 
... 
+0

Да, это именно то, что я ищу. Спасибо @Coderji за ваш быстрый ответ. :) – CrazyLearner

+0

это мое удовольствие :), если вы нашли это полезным, вы можете пометить его как право, чтобы люди могли ссылаться на него в будущем :) – Coderji

+1

Я пометил его как правильно, но извините, не могу проголосовать за вас, поскольку мой рейтинг репутации ниже 15. :( – CrazyLearner

5

Единственным решением для этого является добавление ImageView в другой контейнер.

<FrameLayout 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:layout_gravity="center" 
     android:layout_marginRight="10dp" 
     android:padding="10dp" > 

     <ImageView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_gravity="center" 
      android:background="@drawable/ic_delete_blue" /> 
    </FrameLayout> 
3

Об использовании ImageView

android:src="@drawable/image" 

вместо

android:background="@drawable/image" 

Src тег чтит отступы тогда фон тегов нет. В некоторых случаях, особенно. на clickable значке, плохая идея использовать layout_margin вместо заполнения, так как отступ принадлежит к виду и делает область щелчка больше !.

Смежные вопросы