android中自动适应宽度的TextView

这篇博客介绍了一个在Android中实现TextView自动调整字体大小以适应宽度的需求。作者通过重写TextView的ondraw方法,创建了一个名为AutoTextView的自定义组件。博客包含了MainActivity、ListViewActivity和LayoutActivity的示例代码,以及AutoTextView的源码,演示了如何在单行和ListView中使用该组件。此外,还提供了一个AutoTextView的自定义属性接口。
摘要由CSDN通过智能技术生成

小弟,最近遇到的项目里面有一个需求比较多,就是一个textview只显示一行,如果文字太多显示不下需要缩小字体大小来显示。为此,在网上我也找了挺多的,但是有点问题,都有点不能满足我的需求,在github上面也有一个开源的项目,但是太大了,代码太多,很难阅读,所以我就简单的搞了一下,我重写了一下textview的ondraw方法来重新计算textview宽度到适应宽度,不过这个东西目前只能满足单行的调整,有兴趣的朋友可以改改,改成多行的调整。废话就不多说了, 效果图如下。






最后在看看代码:


MainActiivty(主入口):


package com.jcl.activity;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;


import com.jcl.R;


public class MainActivity extends Activity {
private Button a;
private Button b;


@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
a = (Button) findViewById(R.id.a);
b = (Button) findViewById(R.id.b);
a.setOnClickListener(new View.OnClickListener() {


@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(MainActivity.this,
LayoutActivity.class);
startActivity(intent);
}
});
b.setOnClickListener(new View.OnClickListener() {


@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(MainActivity.this,
ListViewActivity.class);
startActivity(intent);
}
});
}
}




ListViewActivity(在listview中使用AutoTextView列子):

package com.jcl.activity;


import java.util.ArrayList;
import java.util.List;


import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;


import com.jcl.R;
import com.jcl.view.AutoTextView;
import com.jcl.view.AutoTextView.ChangeLayoutListener;


public class ListViewActivity extends Activity{
private ListView listView;
private List<String> list = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-g

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值