Граница для просмотра изображений в Android? - PullRequest
309 голосов
/ 16 июля 2010

Как установить границу для ImageView и изменить ее цвет в Android?

Ответы [ 11 ]

532 голосов
/ 16 июля 2010

Я установил приведенный ниже xml на фон просмотра изображений как Drawable. Это работает.

<?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>

А затем добавьте android:background="@drawable/yourXmlFileName" к вашему ImageView

160 голосов
/ 19 мая 2011

Ниже приведен код, который у меня был с черной рамкой. Обратите внимание, что я не использовал дополнительный XML-файл для границы.

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/red_minus_icon"
    android:background="#000000"
    android:padding="1dp"/>
22 голосов
/ 13 апреля 2012

Это старый пост, который я знаю, но я подумал, что это может кому-то помочь.

Если вы хотите смоделировать полупрозрачную границу, которая не перекрывает «сплошной» цвет фигуры, используйте это в своем xml. Обратите внимание, что здесь я вообще не использую тег «штрих», так как кажется, что он всегда перекрывает фактическую нарисованную форму.

  <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item>
        <shape android:shape="rectangle" >
            <solid android:color="#55111111" />

            <padding
                android:bottom="10dp"
                android:left="10dp"
                android:right="10dp"
                android:top="10dp" />

            <corners android:radius="5dp" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle" >
            <padding
                android:bottom="5dp"
                android:left="5dp"
                android:right="5dp"
                android:top="5dp" />

            <solid android:color="#ff252525" />
        </shape>
    </item>
</layer-list>
19 голосов
/ 11 июля 2014

ImageView в XML-файле

<ImageView
            android:id="@+id/myImage"
            android:layout_width="100dp"
            android:layout_height="100dp"

            android:padding="1dp"
            android:scaleType="centerCrop"
            android:cropToPadding="true"
            android:background="@drawable/border_image"

            android:src="@drawable/ic_launcher" />

сохраните код ниже с именем border_image.xml, и он должен быть в папке для рисования

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:shape="rectangle">
<gradient android:startColor="#ffffff" 
android:endColor="#ffffff"
android:angle="270" />
<corners android:radius="0dp" />
<stroke android:width="0.7dp" android:color="#b4b4b4" />
</shape>

если вы хотите задать закругленный угол для границы изображения, вы можете изменить строку в файле border.xml

   <corners android:radius="4dp" />
2 голосов
/ 06 июля 2016

Добавить фон Drawable как res / drawables / background.xml:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
  <solid android:color="@android:color/white" />
  <stroke android:width="1dp" android:color="@android:color/black" />
</shape>

Обновите фон ImageView в res / layout / foo.xml:

...
<ImageView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:padding="1dp"
  android:background="@drawable/background"
  android:src="@drawable/bar" />
...

Исключите заполнение ImageView, если вы хотите, чтобы src рисовал поверх фона.

2 голосов
/ 12 августа 2015

Это было использовано выше, но не упоминается исключительно.

setCropToPadding(boolean)

If true, the image will be cropped to fit within its padding. 

Это позволит сделать источник ImageView для размещения внутри отступа добавленным к его фону.

Через XML это можно сделать следующим образом:

android:cropToPadding="true"
1 голос
/ 11 июля 2018

Для тех, кто ищет пользовательские границы и форму ImageView. Вы можете использовать android-shape-imageview

image

Просто добавьте compile 'com.github.siyamed:android-shape-imageview:0.9.+@aar' к вашему build.gradle.

И используйте в вашем макете.

<com.github.siyamed.shapeimageview.BubbleImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:src="@drawable/neo"
    app:siArrowPosition="right"
    app:siSquare="true"/>
1 голос
/ 10 июня 2015

Вы должны создать background.xml в res / drawable этот код

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF" />
<corners android:radius="6dp" />
<stroke
    android:width="6dp"
    android:color="@android:color/white" />
<padding
    android:bottom="6dp"
    android:left="6dp"
    android:right="6dp"
    android:top="6dp" />
</shape>
0 голосов
/ 09 февраля 2016

В том же XML я использовал следующее:

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#ffffff" <!-- border color -->
        android:padding="3dp"> <!-- border width -->

        <ImageView
            android:layout_width="160dp"
            android:layout_height="120dp"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:scaleType="centerCrop" />
    </RelativeLayout>
0 голосов
/ 19 июня 2015

Следующее - самое простое решение этой долгой проблемы.

<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>

В следующем ответе Я объяснил это достаточно хорошо, пожалуйста, посмотрите и на это!

Надеюсь, это будет полезно кому-то еще!

...