我的一項活動中有一個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. 設置ListView背景
- 3. 設置的ListView行背景
- 4. 如何在ListView上設置背景
- 5. Android ListView設置項背景
- 6. Android:設置ListView背景
- 7. Android。設置ListView的背景圖像
- 8. 在onCreate設置ListView項背景
- 9. ListView控件設置背景顏色
- 10. 在ListView項目中設置背景
- 11. 爲ListView項目設置背景?
- 12. 當設置onclicklistener禁用ICS ListView背景
- 13. 無法將背景設置爲ListView
- 14. 如何設置一個空的ListView的背景圖片?
- 15. 如何設置ActionBar背景
- 16. 如何設置背景?
- 17. 如何設置ViewBox背景?
- 18. 如何在ListView中設置交替行的背景C#.net 2.0
- 19. WPF ListView - 我如何設置選定的項目背景顏色?
- 20. 如何設置ListView選定行的可繪製背景?
- 21. 如何爲Android ListView背景設置單個圖像?
- 22. 如何在另一個背景圖像背後設置背景?
- 23. 如何設置背景位置x?
- 24. 如何設置背景中的背景顏色火花
- 25. 2背景上的身體:如何設置高度爲背景
- 26. 如何設置NSTabView的背景顏色?
- 27. 如何設置menuitem的背景顏色
- 28. 如何設置UIWebView的背景顏色
- 29. 如何設置UIView的背景圖片?
- 30. 如何設置適當的背景
您需要什麼?您正在嘗試爲List或List的每一行設置背景圖像?使用List的背景屬性有什麼問題嗎? –
我想使用背景列表不是每行?問題是我如何設置自定義視圖,如上所述,作爲listview.Got我的觀點的背景?如果可能,你能告訴我如何以編程方式爲我的customview設置id? –
你正在設置圖像(如PNG文件)或自定義繪圖? –