web-dev-qa-db-ja.com

Android LinearLayoutの周りに境界線を作成するにはどうすればよいですか?

1つの大きなレイアウトと、その内部に1つの小さなレイアウトがあります。

小さなレイアウトの周りに線の境界線を作成するにはどうすればよいですか?

89
user1302569

確かに。任意のレイアウトに境界線を追加できます。基本的に、カスタムドロウアブルを作成し、それをレイアウトの背景として追加する必要があります。例:

描画可能フォルダーに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">

これでうまくいくはずです。

参照:

198
Anup Cowkur

次のように、drawableフォルダーのborder.xmlというCreat 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>

次に、これを背景として線形レイアウトに追加します。

     Android:background="@drawable/border"
23
KDeogharkar

これを試して:

たとえば、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>
10
Android_coder

描画可能なフォルダーに1つの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"

10
Vani

他の回答に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>

背景が透明な赤い枠線。

3
mortalis

このソリューションでは境界線のみが追加され、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ビューで、border.xmlを次のように背景として追加します

<LinearLayout 
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="vertical"
    Android:background="@drawable/border">
3
s-hunter

あなたはそれを実践的に行うこともできます

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

次に、レイアウトの背景を次のように設定します。

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

それは質問に対する正確な答えではありませんが、デバッグのために要素の境界線を表示したいだけの場合は、デベロッパーの設定に移動して、描画セクションでレイアウトの境界を表示するだけで済みます

0
Xiidref

描画可能なリソースを作成したくないですか?

  <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