小弟,最近遇到的项目里面有一个需求比较多,就是一个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-generated method stub
super.onCreate(savedInstanceState);
<

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

2753

被折叠的 条评论
为什么被折叠?



