web-dev-qa-db-ja.com

下部以外の線形レイアウトの周囲に境界線を追加する方法は?

下部を除いて線形レイアウトの周りに境界線を追加する方法は? LinearLayoutには、左、上、および右側に境界線が必要ですが、下部にはありません。

64
Damir

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> 

次に、次のように線形レイアウトに背景を追加します。

         Android:background="@drawable/border"

編集:

このXMLはGingerbread 2.3.を実行するgalaxyでテストされ、以下の画像に示すように完全に実行されました。

enter image description here

JellyBean 4.1.2を実行するgalaxy s 3でテストし、以下の画像に示すように完全に実行しました。

enter image description here

最終的にすべてのAPIで完全に動作します

編集2:

また、ストロークを使用して背景を透明に保ちながら、次のコードで下部を除いて境界を維持することもできます。

<?xml version="1.0" encoding="utf-8"?>
 <layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
   <item Android:left="0dp" Android:right="0dp"  Android:top="0dp"  
        Android:bottom="-10dp"> 
    <shape Android:shape="rectangle">
     <stroke Android:width="10dp" Android:color="#B22222" />
    </shape>
   </item>  
 </layer-list> 

この助けを願っています。

169
Android Stack

このxmlを保存し、線形レイアウトの背景として追加します。

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"> 
    <stroke Android:width="4dp" Android:color="#FF00FF00" /> 
    <solid Android:color="#ffffff" /> 
    <padding Android:left="7dp" Android:top="7dp" 
            Android:right="7dp" Android:bottom="0dp" /> 
    <corners Android:radius="4dp" /> 
</shape>

お役に立てれば! :)

57
Kenny

ケニーは正しいです、ただいくつかのことを片付けたいだけです。

  1. ファイルborder.xmlを作成し、フォルダーres/drawable/に入れます
  2. コードを追加

    <shape xmlns:Android="http://schemas.Android.com/apk/res/Android"> 
       <stroke Android:width="4dp" Android:color="#FF00FF00" /> 
       <solid Android:color="#ffffff" /> 
       <padding Android:left="7dp" Android:top="7dp" 
            Android:right="7dp" Android:bottom="0dp" /> 
       <corners Android:radius="4dp" /> 
    </shape>
    
  3. Android:background="@drawable/border"のような背景を設定します

私はborder.xmlを間違ったフォルダに入れたため、最初はうまくいきませんでした!

22
Jonas

Githubリンク は、軽量で非常に簡単に統合できるライブラリで、FrameLayoutウィジェットに基づいて、必要なウィジェットの境界線を自由に操作できます。

簡単なサンプルコードを以下に示しますが、リンクに関する詳細情報があります。

<com.khandelwal.library.view.BorderFrameLayout
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            app:leftBorderColor="#00F0F0"
            app:leftBorderWidth="10dp"
            app:topBorderColor="#F0F000"
            app:topBorderWidth="15dp"
            app:rightBorderColor="#F000F0"
            app:rightBorderWidth="20dp"
            app:bottomBorderColor="#000000"
            app:bottomBorderWidth="25dp" >
    </com.khandelwal.library.view.BorderFrameLayout>

そのため、下部に境界線が必要ない場合は、このカスタムウィジェットの下部に関する2行を削除すれば完了です。

いいえ、私はこのライブラリの著者でもありませんし、彼の友人でもありません;-)

2
PAD