2017-07-12 3 views
0

これは、EditTextにボーダーを追加する方法です。 EditTextの3辺のみに境界線を追加し、境界線ごとに異なる色と幅を定義するにはどうすればよいですか?以下AndroidでEditTextの異なる色と幅を定義する方法

EditText editText = new EditText(this); 
editText.setText("Find"); 
editText.setWidth(555); 

GradientDrawable border = new GradientDrawable(); 
border.setColor(0xFFFFFFFF); // white background 
border.setStroke(1, 0xFF000000); // black border with full 
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { 
    editText.setBackgroundDrawable(border); 
} else { 
    editText.setBackground(border); 
} 

私の試みは動作しません:

<?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:right="5dp"> 
     <shape android:shape="rectangle"> 
      <solid android:color="#FFFF" /> 
     </shape> 
    </item> 
    <item android:left="22dp"> 
     <shape android:shape="rectangle"> 
      <solid android:color="#746565" /> 
     </shape> 
    </item> 
</layer-list> 

Vielenじめじめイムvoraus。

答えて

1

レイヤーリスト描画可能なものを作成し、カスタムの幅と色で3つの異なる矩形を定義し、各辺の3辺を非表示にして1辺のみを表示します。

<?xml version="1.0" encoding="utf-8"?> 
<layer-list android:paddingLeft="30dp" xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:bottom="-1dp" 
     android:left="-1dp" 
     android:right="-1dp"> 
     <shape android:shape="rectangle"> 
      <stroke 
       android:width="1dp" 
       android:color="#ff0000" /> 
     </shape> 
    </item> 

    <item 
     android:bottom="-3dp" 
     android:right="-3dp" 
     android:top="-3dp"> 
     <shape android:shape="rectangle"> 
      <stroke 
       android:width="3dp" 
       android:color="#11ee66" /> 
     </shape> 
    </item> 

    <item 
     android:bottom="-5dp" 
     android:left="-5dp" 
     android:top="-5dp"> 
     <shape android:shape="rectangle"> 
      <stroke 
       android:width="5dp" 
       android:color="#0000ff" /> 
     </shape> 
    </item> 
</layer-list> 

今すぐあなたのEditText背景に、この描画可能に設定します:次のように:

my_edittext_border.xml

android:background="@drawable/my_edittext_border" 
+0

ありがとうございました。あなたの答えは@Sisaです。左側にパディングを追加するにはどうしたらいいですか?私は 'android:left =" 12dp "'を試しましたが、これは左端の12ピクセルをさらに内側に押し込むだけです。 –

+0

@ Program-Me-Revはレイヤーリストにpaddingを追加します。android:paddingLeft = "30dp" ' – SiSa

+0

こんにちは@SiSa。私はそれを試みたが、変更は表示されません。できればあなたが与えた答えにそれを含めてください。私は完全なAndroidデベロッパー初心者です。 –

1

が背景として、この描画可能に設定し、お好みどおりに変更します。

<?xml version="1.0" encoding="utf-8"?> 
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
     <!--Top border--> 
     <item 
      android:bottom="-2dp" 
      android:left="-2dp" 
      android:right="-2dp" 
      android:top="0dp"> 
      <shape android:shape="rectangle"> 
       <stroke 
        android:width="2dp" 
        android:color="@color/black" /> 
      </shape> 
     </item> 
     <!--Bottom border--> 
     <item 
      android:bottom="0dp" 
      android:left="-2dp" 
      android:right="-2dp" 
      android:top="-2dp"> 
      <shape android:shape="rectangle"> 
       <stroke 
        android:width="2dp" 
        android:color="@color/orange" /> 
      </shape> 
     </item> 
     <!--Right border--> 
     <item 
      android:bottom="-2dp" 
      android:left="-2dp" 
      android:right="0dp" 
      android:top="-2dp"> 
      <shape android:shape="rectangle"> 
       <stroke 
        android:width="2dp" 
        android:color="@color/remove" /> 
      </shape> 
     </item> 
     <!--Left border--> 
     <item 
      android:bottom="-2dp" 
      android:left="0dp" 
      android:right="-2dp" 
      android:top="-2dp"> 
      <shape android:shape="rectangle"> 
       <stroke 
        android:width="2dp" 
        android:color="@color/green" /> 
      </shape> 
     </item> 
    </layer-list> 
+0

あなたの答えは@Usman Ranaありがとうございます。左側にパディングを追加するにはどうしたらいいですか?私はアンドロイドを試しました:left = "12dp"しかし、これは左端12ピクセルをさらに内側に押し込んでいます –

+0

私の答えは私も左の境界線を追加している場合は、コードをスクロールして確認してください。あなたはあなたが望むボーダーを隠すために値を与える必要があります –

0

上記のすべての答えは、ベクトルdrawableを使ってthを描画することもできますat:

<vector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:height="200px" 
    android:width="200px" 
    android:viewportHeight="150" 
    android:viewportWidth="200"> 
    <path 
     android:strokeColor="@android:color/black" 
     android:strokeWidth="1" 
     android:pathData="M0,0 L100,0 "/> 
    <path 
     android:strokeColor="@android:color/white" 
     android:strokeWidth="1" 
     android:pathData="M100,0 L100,100 "/> 
    <path 
     android:strokeColor="@android:color/holo_red_light" 
     android:strokeWidth="1" 
     android:pathData="M100,100 L0,100 "/> 
    <path 
     android:strokeColor="@android:color/holo_green_dark" 
     android:strokeWidth="1" 
     android:pathData="M0,100 L0,0 "/> 

</vector> 
関連する問題