Android中计算fasttext词向量计算文字大小的几个方法

博客分类:
手机设备太多,分辨率也不一样,看到网上大部分的适应字体的方法是定义values320×480或value-hdpi方式去处理。
采用第一种的就惨了,很多设备的分辨率是不一样的,难道要每种都定义吗?
采用第二种的在平板电脑里没有效果。
最后还是代码的方式方便快捷。。。
//遍历设置字体
public static void changeViewSize(ViewGroup viewGroup,int screenWidth,int screenHeight) {//传入Activity顶层Layout,屏幕宽,屏幕高
int adjustFontSize = adjustFontSize(screenWidth,screenHeight);
for(int i = 0; i&viewGroup.getChildCount(); i++ ){
View v = viewGroup.getChildAt(i);
if(v instanceof ViewGroup){
changeViewSize((ViewGroup)v,screenWidth,screenHeight);
}else if(v instanceof Button){//按钮加大这个一定要放在TextView上面,因为Button也继承了TextView
( (Button)v ).setTextSize(adjustFontSize+2);
}else if(v instanceof TextView){
if(v.getId()== R.id.title_msg){//顶部标题
( (TextView)v ).setTextSize(adjustFontSize+4);
( (TextView)v ).setTextSize(adjustFontSize);
//获取字体大小
public static int adjustFontSize(int screenWidth, int screenHeight) {
screenWidth=screenWidth&screenHeight?screenWidth:screenH
* 1. 在视图的 onsizechanged里获取视图宽度,一般情况下默认宽度是320,所以计算一个缩放比率
rate = (float) w/320
w是实际宽度
2.然后在设置字体尺寸时 paint.setTextSize((int)(8*rate));
8是在分辨率宽为320 下需要设置的字体大小
实际字体大小 = 默认字体大小 x
int rate = (int)(5*(float) screenWidth/320); //我自己测试这个倍数比较适合,当然你可以测试后再修改
return rate&15?15: //字体太小也不好看的
最后在Avtivity的oncreate完后调用一下changeViewSize就行了。。。文字大了那么它对应的背景也就跟着大,所以建议控件的背景图片用9宫格类型的图片,看起来舒服。
另外附加,如果你开发的应用想在平板电脑上浏览无碍请在AndroidManifest.xml文件中的manifest节点(DTD建议放在application节点上面)里加入:
&supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:resizeable="true"/&
浏览 22465
浏览: 31827 次
来自: 广州
不错,正合吾意~~
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'Android EditText限制文字长度(中文算2字符,英文算1字符)_Android开发-织梦者
当前位置:&>&&>& > Android EditText限制文字长度(中文算2字符,英文算1字符)
Android EditText限制文字长度(中文算2字符,英文算1字符)
* 限制输入字符长度
中文算3字符,英文算1字符
InputFilter filter = new InputFilter() {
final int maxLen = 21;
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
// TODO Auto-generated method stub
int dindex = 0;
int count = 0;
while (count &= maxLen && dindex & dest.length()) {
char c = dest.charAt(dindex++);
if (c & 128) {
count = count + 1;
count = count + 3;
if (count & maxLen) {
return dest.subSequence(0, dindex - 1);
int sindex = 0;
while (count &= maxLen && sindex & source.length()) {
char c = source.charAt(sindex++);
if (c & 128) {
count = count + 1;
count = count + 3;
if (count & maxLen) {
return source.subSequence(0, sindex);
EditText editText=(EditText)findViewById(R.id.edit_text);
editText.setFilters(new InputFilter[]{filter});
这里实际上就是判断一下,英文ascii码值都是128以下,这里只要通过这个区分,来做个限制即可。
CharSequence filter(CharSequence src, int start, int end, Spanned dest, int dstart, int dend)
这个接口的参数,一开始混淆了好久
src是当前输入的文字,start和end我压根就没用到,就是输入字符的起始和终止长度
dest是当前已经显示的文字,dstart和dend含义一样,我也没用到
在我使用的过程中,使用start/end和dstart/dend就要加强判断sindex和dindex是否超过长度,比较麻烦,所以就直接使用src.length和dest.length了
最后返回的字符串,就是会添加在当前editbox已经存在文字后面,如果不超过限制的话
以上就是 EditText限制文字长度(中文算2字符,英文算1字符)的全文介绍,希望对您学习Android应用开发有所帮助.
这些内容可能对你也有帮助
更多可查看Android开发列表页。
猜您也会喜欢这些文章如何在 Android 的 textview 里获取行数? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。37被浏览<strong class="NumberBoard-itemValue" title="1分享邀请回答144 条评论分享收藏感谢收起private int measureTextViewHeight(String text, int textSize, int deviceWidth) {
TextView textView = new TextView(getContext());
textView.setText(text);
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
int widthMeasureSpec = MeasureSpec.makeMeasureSpec(deviceWidth, MeasureSpec.AT_MOST);
int heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
textView.measure(widthMeasureSpec, heightMeasureSpec);
return textView.getMeasuredHeight();
49 条评论分享收藏感谢收起android如何在同一个TextView或者EditText中显示不同大小的字体
[问题点数:40分,结帖人humanpally]
本版专家分:20
结帖率 100%
CSDN今日推荐
本版专家分:18185
2012年9月 移动平台大版内专家分月排行榜第一2012年8月 移动平台大版内专家分月排行榜第一
2012年10月 移动平台大版内专家分月排行榜第二2012年7月 移动平台大版内专家分月排行榜第二2012年6月 移动平台大版内专家分月排行榜第二2012年5月 移动平台大版内专家分月排行榜第二
本版专家分:1465
本版专家分:228
本版专家分:20
结帖率 100%
本版专家分:20
结帖率 100%
本版专家分:20
结帖率 100%
本版专家分:5
本版专家分:10
匿名用户不能发表回复!|
CSDN今日推荐博客分类:
两种解决方法:一、1、首先根据不同分辨率获取不同字体大小。 在RES里创建values-480x320/strings.xml 里面设置&dimen name="Text_size"&30px&/dimen&和 values-800x400/strings.xml 里面设置&dimen name="Text_size"&30px&/dimen&分别代表480X320 和 800X400分辨率情况下 字号为30px和40在java文件中这样调用int sizeOfText = (int) this.getResources().getDimension(R.dimen.Text_size);二、1. 在视图的 onsizechanged里获取视图宽度,一般情况下默认宽度是320,所以计算一个缩放比率
rate = (float) w/320
w是实际宽度2.然后在设置字体尺寸时 paint.setTextSize((int)(8*rate));
8是在分辨率宽为320 下需要设置的字体大小
实际字体大小 = 默认字体大小 x
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:textSize="@dimen/Text_size"
布局多分辨率适配
浏览: 848570 次
来自: 厦门
谢谢分享,怎么没人顶,写的挺好,配图一目了然
[b][color=darkred][color=brown] ...
a nice demo.
chaosmonkey 写道楼主有没有试试Handler的po ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 fasttext词向量计算 的文章

 

随机推荐