1つの大きなレイアウトと、その内部に1つの小さなレイアウトがあります。
小さなレイアウトの周りに線の境界線を作成するにはどうすればよいですか?
確かに。任意のレイアウトに境界線を追加できます。基本的に、カスタムドロウアブルを作成し、それをレイアウトの背景として追加する必要があります。例:
描画可能フォルダーに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">
これでうまくいくはずです。
参照:
次のように、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"
これを試して:
たとえば、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>
描画可能なフォルダーに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"
他の回答に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>
背景が透明な赤い枠線。
このソリューションでは境界線のみが追加され、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">
あなたはそれを実践的に行うこともできます
GradientDrawable gradientDrawable=new GradientDrawable();
gradientDrawable.setStroke(4,getResources().getColor(R.color.line_Input));
次に、レイアウトの背景を次のように設定します。
LinearLayout layout = (LinearLayout ) findViewById(R.id.ayout); layout .setBackground(gradientDrawable);
それは質問に対する正確な答えではありませんが、デバッグのために要素の境界線を表示したいだけの場合は、デベロッパーの設定に移動して、描画セクションでレイアウトの境界を表示するだけで済みます
描画可能なリソースを作成したくないですか?
<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>