2012-05-08 2 views
2

Мне нужно нарисовать рамку для изображения или текстовое изображение в моем приложении, но мне нужно нарисовать ее только в одном углу, как изображение.Радиус рисования радиуса для просмотра изображений или текстового просмотра в одном углу в Android

enter image description here

Я делаю форму, но я получаю границу во всех 4-х сторон:

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <stroke android:width="1px" android:color="#FF000000" /> 
    <solid android:color="#ffffffff"/> 
    <padding android:left="1px" android:top="1px" 
     android:right="0px" android:bottom="0px" /> 
    <corners android:topLeftRadius="8px" /> 
</shape> 

Как я могу сделать это сделать, как на картинке?

Спасибо, Маттиа

ответ

6

Используйте этот код будет решить:

<?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="#FF0000" /> 
    <corners android:topLeftRadius="15dp" /> 
    </shape> 
</item> 
<item android:left="10dp" android:top="10dp"> 
    <shape android:shape="rectangle"> 
    <solid android:color="#000000" /> 
    <corners android:topLeftRadius="15dp" /> 
    </shape> 
</item> 
</layer-list> 

вы должны сделать корректировки в (макет Xml), также как:

андроида: layout_width

android: layout_height

андроид: paddingTop

андроида: paddingLeft

это выход:

enter image description here

надеюсь, что это поможет.

+0

@pindol сделал вам проверить его, его испытания и работать со мной –

+0

Нет для меня это doesen't работа, вот что я вижу: http://mattialori.net/imageview.png – pindol

+0

@pindol пожалуйста, проверьте ответ об обновлении –

0

Так я и достиг. Используя inset drawable, мы можем добиться этой легкости и большей настройки, которую мы можем сделать с меньшим количеством кода. Используйте этот twoside_border.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!-- inset: It can remove border from any other side--> 
<inset xmlns:android="http://schemas.android.com/apk/res/android" 
android:insetBottom="-15dp" 
android:insetRight="-15dp"> 

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/rectangle"> 
    <stroke 
     android:width="20dp" 
     android:color="#ED302F" /> 

    <!--<corners 
     android:topLeftRadius="20dp" 
     />--> 

    <!--<solid android:color="#f50a0a" />--> 
</shape> 

insetBottom & insetRight-dP значения помогает скрыть границу, где нам не нужно, и как выход:

two side border image

, чтобы получить угол кривой удалите прокомментированную строку в приведенном выше коде

<corners android:topLeftRadius="20dp"/> 

теперь мы можем увидеть кривую изгиба

border with curve image

Используйте этот xml в frame layout, как показано ниже, как я & регулировать отступы или маржу в соответствии с вашими потребностями, так что она вписывается в границы изображение, которое выглядит как кадр.

<FrameLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 

      <ImageView 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 

       android:paddingLeft="5dp" 
       android:paddingRight="5dp" 
       android:paddingTop="5dp" 
       android:scaleType="centerCrop" 
       android:src="@drawable/your_image_file" /> 

      <ImageView 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:background="@drawable/twoside_border" /> 

     </FrameLayout> 
Смежные вопросы