多色边框EditText

时间:2012-12-05 18:18:29

标签: android android-layout android-edittext

我正在试图弄清楚如何制作一个自定义的EditText,它的右侧和左侧有黑色边框,顶部有绿色边框,底部有蓝色边框。见下文: enter image description here

我是Android开发的新手,我花了很多时间阅读他们的文档,但是没有任何关于这种自定义的运气。我知道在CSS中你可以使用border-right,border-left等...属性,但不确定它是否在Android开发中很简单。我正在寻找最兼容的解决方案,最好从版本2.3(姜饼)。

3 个答案:

答案 0 :(得分:1)

您必须制作自定义图像才能用作背景。这是相对简单的,您需要使用in the 2D graphics guide所述的9补丁。

完成后,您将把它放在项目的res / drawable文件夹中,然后将其与XML中的EditText一起使用

<EditText
    android:background="@drawable/my_custom_background"
    ...
/>

答案 1 :(得分:0)

创建一个LayerList,其中方形颜色为所需渐变,上方是带有边框的白色方块。然后将此drawable用作TextView背景。

答案 2 :(得分:0)

您可以使用9-patch或xml <layer-list>创建多色边框EditText 这里我以编程方式创建多色边框EditText。

public class MainActivity extends AppCompatActivity {
 private TextView mTextView;

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

      customTextViewWithBorder();

}

private void customTextViewWithBorder(){
mTextView = (TextView) findViewById(R.id.tv);
         // Initialize some new ColorDrawable objects
                        ColorDrawable leftBorder = new ColorDrawable(Color.RED);
                        ColorDrawable topBorder = new ColorDrawable(Color.GREEN);
                        ColorDrawable rightBorder = new ColorDrawable(Color.BLUE);
                        ColorDrawable bottomBorder = new ColorDrawable(Color.YELLOW);
                        ColorDrawable background = new ColorDrawable(Color.WHITE);

                        // Initialize an array of Drawable objects
                        Drawable[] layers = new Drawable[]{
                                leftBorder, // Red color
                                topBorder, // Green color
                                rightBorder, // Blue color
                                bottomBorder, // Yellow color
                                background // White background
                        };
     // Initialize a new LayerDrawable
    LayerDrawable layerDrawable = new LayerDrawable(layers);
    // Red layer padding, draw left border
                    layerDrawable.setLayerInset(0,0,0,15,0);

                    // Green layer padding, draw top border
                    layerDrawable.setLayerInset(1,15,0,0,15);

                    // Blue layer padding, draw right border
                    layerDrawable.setLayerInset(2,15,15,0,0);

                    // Yellow layer padding, draw bottom border
                    layerDrawable.setLayerInset(3,15,15,15,0);

                    // White layer, draw the background
                    layerDrawable.setLayerInset(4,15,15,15,15);
     mTextView.setBackground(layerDrawable);

                    // Set the TextView padding
                    mTextView.setPadding(25,25,25,25);

}

来源android--code