web-dev-qa-db-ja.com

「LinearLayout」の透明度と一緒に白い境界線

背景が透明で境界線が白い線形レイアウトを追加したかったのです。問題は、私がグーグルで検索した限り、両方のうち1つしか達成できないということです。

これが私がしたことです:

  1. 以下をdrowableに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">
           <solid Android:color="#FFFFFF" /> 
      </shape>
      </item>   
         <item Android:left="5dp" Android:right="5dp" Android:top="5dp" Android:bottom="5dp" >  
         <shape Android:shape="rectangle"> 
         </shape>
       </item>    
      </layer-list> 
    
  2. 私の既存のページレイアウト

         <LinearLayout
            Android:id="@+id/quiz"
            Android:layout_width="150dp"
            Android:layout_height="120dp"
            Android:background="#66041414"          <-------- replaced it with Android:background="@drawable/border"
            Android:orientation="vertical"
            Android:layout_marginLeft="5dp" >
    
             ......
           </LinearLayout>
    

境界線が含まれていると、背景が不透明になります。

最終結果を次のようにしたかったのです。


Reference image

完全にそれに固執しました。それを達成する方法を見つけたかっただけです。どんな提案も非常に役に立ちます。

18
anurag

レイアウトの背景のドローアブル:

必要に応じて、コーナー形状の半径を変更できます。ただし、ストロークによって境界線が作成され、塗りつぶされた部分が背景として透明になります。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
       Android:shape="rectangle">
  <corners
      Android:radius="2dp"
      Android:topRightRadius="0dp"
      Android:bottomRightRadius="0dp"
      Android:bottomLeftRadius="0dp" />
  <stroke
      Android:width="1dp"
      Android:color="@Android:color/white" />
  <solid Android:color="@Android:color/transparent"/>
</shape>

および私のテストlayout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/ll1"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:orientation="vertical" >


    <LinearLayout 
        Android:id="@+id/ll2"
        Android:layout_height="50dp"
        Android:layout_width="50dp"
        Android:background="@drawable/my_transparent_linear_layout"></LinearLayout>
</LinearLayout>

動作します。以下がその証拠です:

enter image description here

39
VendettaDroid

背景用のXmlDrawable:

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<corners Android:radius="30dp" />
<stroke Android:width="5dp" Android:color="#ffffffff"/>
<solid Android:color="#66000000"/>
</shape>

半径、幅、暗い色の透明度(#ffおよび#​​66パーツ)を自由に調整します。

2
S.D.

このために、2つのレイアウトalignedを上下に使用してから、top viewの背景transparentを設定し、bottom viewの背景として白い境界線を設定できます。これはrelative layouts内で実行できます。

2
Ali Imran

@ALi Imranによる確かに良い提案、以下の方法を確認してください、それが役立つことを願っています。

back.xml

<?xml version="1.0" encoding="UTF-8"?> 
    <shape xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:shape="rectangle"> 
         <stroke Android:width="1dp" Android:color="#dd7b7a"/>
         <corners Android:bottomRightRadius="10dp" Android:bottomLeftRadius="10dp" 
         Android:topLeftRadius="10dp" Android:topRightRadius="10dp"/> 
         <solid Android:color="#dd7b7a"/>
     </shape>

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:orientation="vertical"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:gravity="center"
    >
<LinearLayout 
     Android:padding="4dip"
    Android:orientation="vertical"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:background="@drawable/back"
    Android:gravity="center_horizontal"
    >
<LinearLayout  
    Android:layout_width="wrap_content" 
    Android:layout_height="wrap_content" 
   Android:background="@drawable/tile_mode" // your transparent image
    />
</LinearLayout>  
</LinearLayout>

以下のリンクも参照してください。xmlの使用方法が有効です。

ストロークのある角が丸いビットマップ画像

2
RobinHood