web-dev-qa-db-ja.com

EditTextフィールドにドロップシャドウ効果を追加する

私はEditText Fieldのようなシャドウ(下と右)をデザインしようとしています

enter image description here

グーグルを試みて、多くのSOディスカッションを探しましたが、すべてEditTextではなくTextView用です。

これは、入力テキストにシャドウを追加するが、TextFieldにはシャドウを追加しない私のコードです

<EditText Android:id="@+id/txtpin" 
        Android:maxLength="4" 
        Android:layout_marginLeft="10dp" 
        Android:layout_height="37dp" 
        Android:gravity="center_horizontal" 
        Android:inputType="textPassword" 
        Android:longClickable="false" 
        Android:layout_width="160dp" 

        Android:shadowColor="@color/Black"
        Android:shadowDx="1.2"
        Android:shadowDy="1.2"
        Android:shadowRadius="1.5" 

        Android:background="@color/White">
            <requestFocus></requestFocus>
        </EditText>

ドローアブルにはカスタムxmlビューが必要ですが、正確なアイデアは得られません。これを達成するためのロジックは何でしょう。

任意の助けいただければ幸いです。

13
swiftBoy

うーん.. @Shaliniの答えはこのように私を助けましたが、それでもEditTextフィールドで2Dシャドウを達成する別の方法がありましたので、あなたと共有します。

EditText、下の影、右側の影の3つのレイヤーを持つカスタムXMLビューを作成する必要があります

以下は私のコードです。

res/drawable/edittext_shadow.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">

<!-- most important is order of layers -->

    <!-- Bottom right side 2dp Shadow -->
    <item >
        <shape Android:shape="rectangle">
            <solid Android:color="#000000" />           
        </shape>
    </item>

    <!-- Bottom 2dp Shadow -->
    <item>
        <shape Android:shape="rectangle">
            <solid Android:color="#000000" />   
        </shape>
    </item>

    <!-- White Top color -->
    <item Android:bottom="3px" Android:right="3px">
        <shape Android:shape="rectangle">
            <solid Android:color="#FFFFFF" />           
        </shape>
    </item> 
</layer-list>

これで、「Background」プロパティを使用して、このシャドウビューをTextFieldに設定できます。

このような

res/layout/main.xml

<EditText Android:layout_width="wrap_content" 
            Android:id="@+id/txtpin"  
            Android:maxLength="4" 
            Android:layout_height="37dp" 
            Android:gravity="center_horizontal" 
            Android:longClickable="false" 
            Android:padding="2dp"

            Android:inputType="textPassword|number" 
            Android:password="true" 
            Android:background="@drawable/edittext_shadow" 
            Android:layout_weight="0.98" 
            Android:layout_marginLeft="15dp">
                <requestFocus></requestFocus>
   </EditText>

結果画面は、私が上記の質問に投稿したようなものです。

SOのおかげで、知識を共有しています。

24
swiftBoy

これは私のために働く。

   <EditText 
       Android:layout_width="fill_parent" 
       Android:shadowRadius="2"  
       Android:shadowColor="#0000ff"
       Android:shadowDx="2"
       Android:shadowDy="4" 
       Android:id="@+id/EditText01" 
       Android:layout_height="wrap_content" />

それが役に立てば幸い:)

8
Shalini

Androidのテキストのシャドウ効果? から、おそらく使用を検討するでしょう

Android:shadowColor, 
Android:shadowDx,
Android:shadowDy,
Android:shadowRadius;

または:

setShadowLayer()
2
Shrikant