Граница для изображения в Android?

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

Solutions Collecting From Web of "Граница для изображения в Android?"

Я установил нижеследующий xml на фоне Image View as 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

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

 <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/red_minus_icon" android:background="#000000" android:padding="1dp"/> 

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

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

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

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" /> 1 <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" /> 

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

 setCropToPadding(boolean) If true, the image will be cropped to fit within its padding. 

Это приведет к тому, что источник ImageView будет помещен в дополнение к фону.

Через XML это может быть показано ниже,

 android:cropToPadding="true" 

Добавить фоновый рисунок, например, 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" /> ... 1 ... <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="1dp" android:background="@drawable/background" android:src="@drawable/bar" /> ... 

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

Мне было гораздо легче сделать это:

1) Отредактируйте рамку, чтобы внутри было содержимое (с помощью инструмента 9patch).

2) Поместите ImageView внутри Linearlayout и установите цвет фона или цвет рамки в качестве фона Linearlayout . Когда вы устанавливаете кадр для содержания внутри себя, ваш ImageView будет внутри кадра (прямо там, где вы устанавливаете контент с помощью инструмента 9patch).

Вы должны создать 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> 

В том же 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> 

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

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

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

Надеюсь, это поможет кому-то еще!