我正在试图弄清楚如何制作一个自定义的EditText,它的右侧和左侧有黑色边框,顶部有绿色边框,底部有蓝色边框。见下文:
我是Android开发的新手,我花了很多时间阅读他们的文档,但是没有任何关于这种自定义的运气。我知道在CSS中你可以使用border-right,border-left等...属性,但不确定它是否在Android开发中很简单。我正在寻找最兼容的解决方案,最好从版本2.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);
}