2011-04-30 16 views

Odpowiedz

55

Można utworzyć zasób (warstwa odkształcalne xml) dla «granicznej» (właściwie tle) Twoje ImageView „s, i zadeklarować w swoim theme, że ImageView Zasób tła to szuflada xml.

Jeśli potrzebujesz tej „granicy”, aby zostać zmieniona na podstawie członkowskiego ImageView „s (focused, selected, etc.), a następnie należy utworzyć kolejne warstwy kanału alfa, i umieścić je razem w xml wybieraka (stan odkształcalne) .
Następnie w swoim motywie powinieneś ustawić tło jako selector.xml.

Aktualizacja
Poniżej znajduje się próbka, jak określić prostą ramkę do zdjęć, które będą skutkować

efteling with border

Trzeba

  1. utworzyć nową warstwę plik do pobrania (image_border.xml),
  2. zmodyfikuj/stwórz swoją styles.xml złożyć
  3. zmodyfikować/utworzyć plik colors.xml
  4. zmodyfikować plik xml układ (lub kod), aby zastosować styl do ImageView.

res/odkształcalne/image_border.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="rectangle"> 
      <gradient android:angle="90" 
       android:startColor="@color/image_border_start" 
       android:centerColor="@color/image_border_center" 
       android:endColor="@color/image_border_end" /> 
     </shape> 
    </item> 
    <item android:top="2dp" android:left="2dp" 
     android:right="2dp" android:bottom="2dp"> 
     <shape android:shape="rectangle"> 
      <solid android:color="@color/default_back_color" /> 
     </shape> 
    </item> 
</layer-list> 

res/wartości/styles.xml
dodać następujące linie:

<style name="myImageView"> 
    <!-- 3dp so the background border to be visible --> 
    <item name="android:padding">3dp</item> 
    <item name="android:background">@drawable/image_border</item> 
    <item name="android:scaleType">fitCenter</item> 
</style> 

res/wartości/colors.xml
Dodaj następujące linie:

<color name="image_border_start">#40990000</color> 
<color name="image_border_end">#FF660000</color> 
<color name="image_border_center">#FFFF3333</color> 

I wreszcie określić styl swoimi ImageView w układu xml:

<ImageView android:id="@+id/my_image" 
    android:layout_width="100dp" android:layout_height="100dp" 
    android:src="@drawable/efteling" 
    style="@style/myImageView" /> 
+0

Dzięki Przyjaciele za informacje. – Piyush

+1

Nie ma problemu, mam nadzieję, że możesz zacząć od powyższego przykładu. Jeśli potrzebujesz więcej informacji, proszę zapytać :) – rekaszeru

+0

Jeszcze raz dziękuję za kod ....... – Piyush

8

Można wykorzystać ten plik XML jako rozciągliwej zamiast wielu plików, ale ten plik jest umieszczony w folderze do rysowania. W ImageView używaj tego pliku XML jako tła do rysowania w formacie , na przykład: android:background="@drawable/following code file name".

Mam nadzieję, że jest to pomocne.

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#FFFFFF" /> 
    <stroke android:width="1dp" android:color="#000000" /> 
    <padding android:left="1dp" android:top="1dp" android:right="1dp" 
     android:bottom="1dp" /> 
</shape> 
1

Próbowałem wszystkich powyższych rozwiązań, ale nie działały one dla mnie! Więc wymyśliłem proste rozwiązanie tego! :-)

Pamiętam, że przeczytałem o FrameLayout z Androidem w poniższej article, mówiąc, że pomaga nam ono układać nasze elementy UI jeden na drugim w tej samej kolejności, w której je dodamy.

Rozwiązanie:

<FrameLayout 
    android:layout_width="112dp" 
    android:layout_height="112dp" 
    android:layout_marginLeft="16dp" <!-- May vary according to your needs --> 
    android:layout_marginRight="16dp" <!-- May vary according to your needs --> 
    android:layout_centerVertical="true"> 
    <!-- following imageView acts as the boarder which sitting in the background of our main container ImageView --> 
    <ImageView 
     android:layout_width="112dp" 
     android:layout_height="112dp" 
     android:background="#000"/> 
    <!-- following imageView holds the image as the container to our image --> 
    <!-- layout_margin defines the width of our boarder, here it's 1dp --> 
    <ImageView 
     android:layout_width="110dp" 
     android:layout_height="110dp" 
     android:layout_margin="1dp" 
     android:id="@+id/itemImageThumbnailImgVw" 
     android:src="@drawable/banana" 
     android:background="#FFF"/> 
</FrameLayout> 

Preview:

I to wszystko. Otrzymasz następujące, jak imageView!

preview of the ImageView with boarder

Plusy i minusy:

myślę, że to jest całkiem proste rozwiązanie do zastosowania w innym miejscu i to wszystko, co możesz zrobić, siedzi w jednym miejscu, dzięki czemu łatwiej je zmodyfikować. Jednak nie lubię dodawać dwóch widoków obrazu.

Powiązane problemy