简体   繁体   English

如何以编程方式为视图设置背景?

[英]How to set background to views programmatically?

I added a View to layout programmatically to draw a horizontal line. 我以编程方式添加了View以绘制水平线。

Below is java code. 以下是java代码。

  // I want to add a view to ll
  LinearLayout ll = (LinearLayout)findViewById(R.id.main);

  LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
  View view = new View(this);
  ll.addView(view);
  view.setLayoutParams(params);

  // this method does not work.
  view.setBackgroundDrawable(getResources().getDrawable(R.drawable.division_line));

my division_line.xml in /drawable is: / drawable中的division_line.xml是:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:color="#800400"
            android:width="2dp"/>
</shape>

I tried to apply division_line.xml to View but it doesn't work. 我试图将division_line.xml应用于“ View但是它不起作用。 What method should I use? 我应该使用什么方法?

view.setBackground(getResources().getDrawable(R.drawable.division_line)) instead of view.setBackgroundDrawable(...) view.setBackground(getResources()。getDrawable(R.drawable.division_line))而不是view.setBackgroundDrawable(...)

and keep in mind that first 2dp isn't much and you are adding a view with no layout properties so its size is 0px x 0px 并记住第一个2dp并不多,并且您要添加一个没有布局属性的视图,因此其大小为0px x 0px

you can do so in code: view.setLayoutParams(new AbsListView.LayoutParams(300, 300)); 你可以在代码中这样做:view.setLayoutParams(new AbsListView.LayoutParams(300,300));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM