小弟,最近遇到的项目里面有一个需求比较多,就是一个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