在android 自定义listView中绘制矩形

本文介绍如何在Android的ListView中使用自定义视图DrawView绘制矩形,并提供了一种可行的方法来实现这一功能。

我想在android 在listview中绘制自定义的形状,我在网上找了代码但是没有运行通过,我现在有一个可以绘制矩形的 DrawView.java类,我想在我的自定义listView中展示这个对象。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
DrawView.java
package com.example.horizontalscrollview;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
 
public class DrawView extends View {
  
     Paint paint = new Paint();
 
 
 
     public DrawView(Context context) {
  
         super (context);           
  
     }
 
 
 
     @Override
  
     public void onDraw(Canvas canvas) {
  
         paint.setColor(Color.BLACK);
  
         paint.setStrokeWidth( 3 );
  
         canvas.drawRect( 30 , 30 , 180 , 180 , paint);
 
 
 
 
     }
 
 
 
}
}


我的配置文件如下

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 
    android:layout_width="wrap_content"
 
    android:layout_height="wrap_content"
 
    android:orientation="vertical"
 
    android:layout_margin="60dp"
 
    android:id="@+id/mainLayout"
 
     >

 

     <com.example.horizontalscrollview.DrawView
 
        android:id="@+id/drawview"
 
        android:layout_width="wrap_content"
 
        android:layout_height="wrap_content"
 
        android:layout_alignParentBottom="true" >
 
      </com.example.horizontalscrollview.DrawView>

 

<
</LinearLayout>


listview 适配器的   getView() 函数如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public View getView( final int position,  View convertView, final ViewGroup parent) {
 
 
 
         Toast.makeText(c, "Clicked on=" +position, 1 ).show();
  
         convertView = mInflater.inflate(R.layout.news_list_item, null );
  
         DrawView rl = (DrawView)convertView.findViewById(R.id.drawview);
  
         DrawView draw = new DrawView(c);
  
         rl=draw;
  
         return convertView;
}
}

处理方法

追加下面的xml内容

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
a
android:layout_width="wrap_content"
a
android:layout_height="wrap_content"
a
android:orientation="vertical"
 
 android:layout_margin="60dp"
a
android:id="@+id/mainLayout"
 
 >

 

 <com.example.horizontalscrollview.DrawView
 
    android:id="@+id/drawview"
 
    android:layout_width="wrap_content"
 
    android:layout_height="wrap_content"
 
    android:layout_alignParentBottom="true" >
 
  </com.example.horizontalscrollview.DrawView>

 

<
</LinearLayout>


getView 方法如下:
public View getView(final int position,  View convertView, final ViewGroup parent) {

 

    Toast.makeText(c, "Clicked on="+position, 1).show();
 
    convertView = mInflater.inflate(R.layout.news_list_item,null);

 

    return convertView;
}
}


这个应该能够正常运行


原文地址:http://www.itmmd.com/201411/120.html 
该文章由 萌萌的IT人 整理发布,转载须标明出处。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值