Android自定义可以在文字上方显示备注的View
来源:互联网 发布:淘宝的会员名怎么改 编辑:程序博客网 时间:2024/04/29 17:49
闲着没事干写写这个,算坐标要算晕了,恐怕半个月后自己都要看不懂了
package com.example.texttest;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Point;import android.graphics.Rect;public class KString{ private String[] mKString; private Paint mainPaint; private Paint subPaint; public int mainH,subH,mainW,subW,allW,allH; private Point mainStart,subStart; public KString(String main,String sub){ mKString = new String[2]; subPaint=new Paint(); mainPaint=new Paint(); subPaint.setAntiAlias(true); mainPaint.setAntiAlias(true); subPaint.setColor(Color.BLACK); mainPaint.setColor(Color.BLACK); mainPaint.setTextSize(20); subPaint.setTextSize(13); setText(main, sub); } public void setText(String main,String sub){ mKString[0]=main; mKString[1]=sub; Rect mainR=new Rect(); mainPaint.getTextBounds(mKString[0], 0, mKString[0].length(), mainR); Rect subR=new Rect(); subPaint.getTextBounds(mKString[1], 0, mKString[1].length(), subR); mainH=mainR.bottom-mainR.top+1; mainW=mainR.right-mainR.left; subH=subR.bottom-subR.top+1; subW=subR.right-subR.left; mainStart=new Point(0, 0); subStart=new Point(0, 0); allW=Math.max(mainW, subW); allH=mainH+subH; } public void draw(Canvas c){ c.drawText(mKString[0], mainStart.x, mainStart.y, mainPaint); c.drawText(mKString[1], subStart.x, subStart.y, subPaint); } public void setStartPoint(int x,int y,int mainH,int subH){ y=y+(mainH+subH)-2; mainStart.x=x+(allW-mainW)/2;; mainStart.y=y; subStart.y=y-mainH; subStart.x=x+(allW-subW)/2; } public int getHeight(){ return allH; } public int getWidth(){ return allW; } }
package com.example.texttest;import java.util.ArrayList;import java.util.List;import android.content.Context;import android.graphics.Canvas;import android.util.AttributeSet;import android.view.View;public class MyText extends View { List<KString> mData; private int mainH=0,subH=0,charPadding=3,allW; public MyText(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub mData=new ArrayList<KString>(); } public MyText(Context context){ super(context); } public void setKString(String main,String sub){ KString ks=new KString(main, sub); mData.add(ks); if(ks.mainH>mainH) mainH=ks.mainH; if(ks.subH>subH) subH=ks.subH; } public void setKString(String s){ String[] sa=s.split(";"); for(int i=0;i<sa.length;i+=2){ setKString(sa[i], sa[i+1]); } } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub allW=0; for(KString item:mData){ item.setStartPoint(allW, 0, mainH, subH); allW+=item.allW+charPadding; item.draw(canvas); } } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // TODO Auto-generated method stub setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), mainH+subH); } }
package com.example.texttest;import android.os.Bundle;import android.app.Activity;import android.view.Menu;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ((MyText)findViewById(R.id.myText1)).setKString("あんな; ;空;そら;で; ;ミサイル;misairu;が; ;飛;と;ぶのなら; "); ((MyText)findViewById(R.id.myText2)).setKString("そんな; ;物;もの;で; ;幸;しあわ;せを; ;乞;こ;うのなら; "); ((MyText)findViewById(R.id.myText3)).setKString("優;やさ;しい; ;人;ひと;にならなくちゃ; "); ((MyText)findViewById(R.id.myText4)).setKString("僕;ぼく;は; ;僕;ぼく;を; ;肯定;こうてい;していけるかな; "); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <com.example.texttest.MyText android:id="@+id/myText1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <com.example.texttest.MyText android:id="@+id/myText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/myText1" android:layout_marginTop="10dp" /> <com.example.texttest.MyText android:id="@+id/myText3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/myText2" android:layout_marginTop="10dp" /> <com.example.texttest.MyText android:id="@+id/myText4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/myText3" android:layout_marginTop="10dp" /></RelativeLayout>
<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- Android自定义可以在文字上方显示备注的View
- 【android】让popupwindow显示在view的上方并与该view水平居中对齐
- 【android】让popupwindow显示在view的上方并与该view水平居中对齐
- Android textView复制,popupwindow显示在文字上方
- 图片在文字上方一起显示的TextView或者Button
- Android自定义PopupWindow显示在控件上方或者下方
- Android自定义PopupWindow显示在控件上方或者下方
- Android自定义PopupWindow显示在控件上方或者下方
- 一个用粒子动画显示文字的 Android 自定义 View
- 流程图:如何在连接线上方显示文字
- 自定义view,drawtext中文字上方多两个横杠
- 让popupwindow显示在view的上方并与该view水平居中对齐
- 让popupwindow显示在view的上方并与该view水平居中对齐
- 键盘上方自定义view
- 在android应用使用自定义的字体显示文字
- Android 自定义View SeekBar 带浮动文字显示
- Android自定义View单TextView显示多种文字样式
- android EditText在输入的时候输入框上方出现悬浮文字提示
- HDU 3177 Crixalis's Equipment
- 微软老将Philip Su的离职信:回首12年职场生涯的心得和随笔
- 深入浅出Symfony2 - 如何提高网站响应速度
- Kylix安装配置实战 .
- Android Spinner控件学习笔记 二
- Android自定义可以在文字上方显示备注的View
- Myeclipse10下载与破解
- 面试题:谈谈自己对spring的理解
- 目前我收集到的GPU数据....
- python 字典dict 的使用
- java抽象类和接口的区别
- LigerUi中的错误代码总结(更新中)
- ~/.xinitrc的一些知识
- IOS开发之keyboard弹出遮盖输入框