我的一项活动中有一个ListView
。我有一个自定义视图创建延伸ImageView
。我想添加这个customview作为listview的背景。因为我们有两个函数setBackGroundDrawable(Drawable d)
和setBackGroundResource(resource)
。我不能使用这个中的任何一个?
任何人有任何好主意我怎么能做到这一点?我搜索,但无法得到任何解决方案。如何设置listview的背景?
回答
编辑:我有一个教程
当你要动态地画一些二维图形,一个ShapeDrawable对象可能会满足你的需求。通过ShapeDrawable,您可以通过编程方式绘制原始形状并以任何可想象的方式对其进行设计。
ShapeDrawable是Drawable的扩展,所以你可以使用一个可以绘制Drawable的地方 - 也许是用于设置setBackgroundDrawable()的View的背景。当然,您也可以将自己的形状绘制为自己的自定义视图,但是无论如何,您都可以将其添加到布局中。由于ShapeDrawable具有自己的draw()方法,因此您可以创建View的子类,该子类在View.onDraw()方法中绘制ShapeDrawable。这里,不只是这个View类的基础扩展,绘制ShapeDrawable作为景观:
public class CustomDrawableView extends View {
private ShapeDrawable mDrawable;
public CustomDrawableView(Context context) {
super(context);
int x = 10;
int y = 10;
int width = 300;
int height = 50;
mDrawable = new ShapeDrawable(new OvalShape());
mDrawable.getPaint().setColor(0xff74AC23);
mDrawable.setBounds(x, y, x + width, y + height);
}
protected void onDraw(Canvas canvas) {
mDrawable.draw(canvas);
}
}
在构造函数中,一个ShapeDrawable是定义为一个OvalShape。然后给它一个颜色,并设置形状的边界。如果您未设置边界,则不会绘制该形状,而如果您未设置颜色,则会默认为黑色。
使用自定义视图定义,它可以任何你喜欢的方式绘制。与上面的例子中,我们可以在一个活动程序绘制形状:
CustomDrawableView mCustomDrawableView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCustomDrawableView = new CustomDrawableView(this);
setContentView(mCustomDrawableView);
}
如果你想从XML布局,而不是从活动得出这个自定义绘制,那么CustomDrawable类必须覆盖View(Context, AttributeSet)构造函数,在通过XML从通货膨胀实例化View时调用。然后,CustomDrawable元素添加到XML,像这样:
<com.example.shapedrawable.CustomDrawableView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
的ShapeDrawable类(像许多其他类型的可绘制在android.graphics.drawable包),您可以用公共的方法定义绘制的各种属性。您可能需要调整的某些属性包括Alpha透明度,颜色过滤器,抖动,不透明度和颜色。
您还可以使用XML定义原始可绘制形状。有关更多信息,请参阅Drawable Resources document中关于Shape Drawables的部分。
试试:
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.example.shapedrawable.CustomDrawableView
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cacheColorHint="#00000000"/>
</RelativeLayout>
并设置自定义绘制,ABLES到ImageView的。
希望这会起作用。 :)
你让我错了,我没有drawable。我有自定义视图,它有onDraw()方法,它是在画布上绘制圆圈。现在有什么想法? –
@AndroidMirza我清楚这次了吗? –
这不是工作。谢谢!!!无论如何感谢您的帮助,+1。 –
您不能使用您的自定义View
作为背景ListView
。 但是,一种解决方法可能是:
- 使用
RelativeLayout
作为父级布局容器。 - 添加
LinearLayout
有两种宽度的fill_parent
财产和 高度 - 提供任何ID作为
list_background
到LinearLayout
。 - 然后将
ListView
添加到父RelativeLayout
。 - 添加属性
android:layout_centerInParent="true"
到两个ListView
和你CustomRow
的ListView
和LinearLayout
- 去除背景的,如果您有任何 。
- 现在得到的
LinearLayout
在Java中,并添加View
到LinearLayout
在这种情况下,如果我将滚动然后将滚动或不滚动?因为使用某种方式(不是我在这里说的),我能够显示两者,但是当滚动时,只有listview滚动不是我的自定义视图,因为它具有绘制的画布。当我的自定义视图扩展ImageView.So时,可以设置它是id,然后在listview上调用setBackGroundResource(R.id.xyz)。可能吗? –
你正在描述的情况是不可能的,使用'ListView'。 –
- 1. 如何在ListView上设置背景
- 2. Android:设置ListView背景
- 3. Android ListView设置项背景
- 4. Android。设置ListView的背景图像
- 5. ListView控件设置背景颜色
- 6. 在ListView项目中设置背景
- 7. 无法将背景设置为ListView
- 8. 当设置onclicklistener禁用ICS ListView背景
- 9. 在onCreate设置ListView项背景
- 10. 如何设置一个空的ListView的背景图片?
- 11. 如何设置ActionBar背景
- 12. 如何在ListView中设置交替行的背景C#.net 2.0
- 13. 如何设置ListView选定行的可绘制背景?
- 14. WPF ListView - 我如何设置选定的项目背景颜色?
- 15. 如何在另一个背景图像背后设置背景?
- 16. 如何设置网格的背景?
- 17. 如何设置tableView的背景颜色
- 18. 如何设置JLabel的背景色?
- 19. 如何设置TextView的左侧背景
- 20. 如何设置UIWebView的背景颜色
- 21. 如何设置标题栏的背景?
- 22. 如何设置UIWebView的背景颜色?
- 23. ListView Android背景
- 24. Android设置背景
- 25. 设置背景值
- 26. 设置背景ACtionbarSherlock
- 27. 设置Imageview背景
- 28. 将背景设置为背景
- 29. 设置背景或背景图片
- 30. Emacs,hl线条背景。如何设置透明背景颜色?
您需要什么?您正在尝试为List或List的每一行设置背景图像?使用List的背景属性有什么问题吗? –
我想使用背景列表不是每行?问题是我如何设置自定义视图,如上所述,作为listview.Got我的观点的背景?如果可能,你能告诉我如何以编程方式为我的customview设置id? –
你正在设置图像(如PNG文件)或自定义绘图? –