Android LinearLayout 주위에 테두리를 만들려면 어떻게해야합니까?


답변:


241

확실한. 원하는 레이아웃에 테두리를 추가 할 수 있습니다. 기본적으로 사용자 지정 드로어 블을 만들고 레이아웃에 배경으로 추가해야합니다. 예:

customborder.xml드로어 블 폴더에 라는 파일을 만듭니다 .

<?xml version="1.0" encoding="UTF-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
   <corners android:radius="20dp"/> 
   <padding android:left="10dp" android:right="10dp" android:top="10dp" android:bottom="10dp"/>
   <stroke android:width="1dp" android:color="#CCCCCC"/>
 </shape>

이제 작은 레이아웃에 배경으로 적용하십시오.

<LinearLayout android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/customborder">

그게 트릭을해야합니다.

참조 :


29
<solid>는 사각형의 색상을 채 웁니다. 테두리 만 그리는 대신 <stroke>를 사용해야합니다.
NightFury 2013

1
여기서 트릭은 실제로 <패딩>입니다. 내 모양이 작동하지 않는 이유를 찾는 데 시간이 좀 걸렸습니다. 패딩을 사용하면 잘 작동합니다.
John

3
모두 <solid/><stroke/>전체 사각형을 채우기? 내 코드의 버그입니까?
mr5 2014

13
<stroke android : width = "1dip"android : color = "# CCCCCC"/>를 추가하면 정상적으로 작동합니다.
Pierry

1
Pierry의 의견은이 답변을 정확합니다. 그렇지 않으면 완전히 채워진 배경 만 얻을 수 있습니다.
kagkar

25

아래와 같이 drawable 폴더에 border.xml이라는 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="#FF0000" /> 
    </shape>
  </item>   
    <item android:left="5dp" android:right="5dp"  android:top="5dp" >  
     <shape android:shape="rectangle"> 
      <solid android:color="#000000" />
    </shape>
   </item>    
 </layer-list>

그런 다음 이것을 선형 레이아웃에 다음과 같이 backgound로 추가하십시오.

     android:background="@drawable/border"

11

이 시도:

예를 들어 res / drawable / my_custom_background.xml을 다음과 같이 정의 해 보겠습니다.

(드로어 블 폴더에이 레이아웃 생성) layout_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">
            <stroke android:width="2dp" android:height="2dp"
                android:color="#FF0000" />
            <solid android:color="#000000" />
            <padding android:left="1dp" android:top="1dp" android:right="1dp"
                android:bottom="1dp" />

            <corners android:radius="1dp" android:bottomRightRadius="5dp"
                android:bottomLeftRadius="0dp" android:topLeftRadius="5dp"
                android:topRightRadius="0dp" />
        </shape>
    </item>

</layer-list>

main.xml

<LinearLayout 
    android:layout_gravity="center"
    android:layout_width="200dp" 
    android:layout_height="200dp"   
    android:background="@drawable/layout_border" />
</LinearLayout>

11

드로어 블 폴더에 하나의 xml 파일 만들기

<stroke
    android:width="2dp"
    android:color="#B40404" />

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

<corners android:radius="4dp" />

이제이 xml을 작은 레이아웃 배경으로 호출하십시오.

android : background = "@ drawable / yourxml"


여기서 요소 스트로크는 허용되지 않습니다.
hdavidzhu

3

이 솔루션은 테두리 만 추가하고 LinearLayout의 본문은 투명합니다.

먼저 드로어 블 폴더에이 테두리 드로어 블을 만듭니다. border.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android= "http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <stroke android:width="2dp" android:color="#ec0606"/>
    <corners android:radius="10dp"/>
</shape>

그런 다음 LinearLayout View에서 border.xml을 다음과 같이 배경으로 추가하십시오.

<LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/border">

3

실용적으로도 할 수 있습니다.

  GradientDrawable gradientDrawable=new GradientDrawable();
   gradientDrawable.setStroke(4,getResources().getColor(R.color.line_Input));

그런 다음 레이아웃의 배경을 다음과 같이 설정하십시오.

LinearLayout layout = (LinearLayout ) findViewById(R.id.ayout); layout .setBackground(gradientDrawable);

3

다른 답변에 Android 문서 링크를 추가하겠습니다.

https://developer.android.com/guide/topics/resources/drawable-resource.html#Shape

Shape Drawable의 모든 속성을 설명하고 stroke그중에서 테두리를 설정합니다.

예:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
  <stroke android:width="1dp" android:color="#F00"/>
  <solid android:color="#0000"/>
</shape>

투명 한 배경으로 빨간색 테두리입니다.


단색 부분을 사용하면 색조를 테두리에만 설정할 수 있습니다. +1
aksh1618

0

드로어 블 리소스를 만들고 싶지 않습니까?

  <FrameLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/black"
    android:minHeight="128dp">

    <FrameLayout
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_margin="1dp"
      android:background="@android:color/white">

      <TextView ... />
    </FrameLayout>
  </FrameLayout>

0

res / drawable에서 이것을 시도하십시오

    <?xml version="1.0" encoding="UTF-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
  <shape
    android:shape="rectangle">
    <padding android:left="15dp"
        android:right="15dp"
        android:top="15dp"
        android:bottom="15dp"/>
    <stroke android:width="10dp"
        android:color="@color/colorPrimary"/>
  </shape>
</item><item android:left="-5dp"
        android:right="-5dp"
        android:top="-5dp"
        android:bottom="-5dp">
  <shape android:shape="rectangle">
    <solid android:color="@color/background" />
  </shape></item></layer-list>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.