更改listview的字体大小和文本大小

时间:2015-02-19 07:52:19

标签: java android

在我的应用程序中,我有一个列表视图,其中包含图像按钮和文本视图。 我想通过选择用户来更改列表视图的字体大小和字体大小。 我的列表视图从ArrayAdapter扩展而来。  这是我的代码:

public class ListAdapter extends ArrayAdapter<String> {
customButtonListener customListner;





public interface customButtonListener {
    public void onButtonClickListner(int position,String value);
}

public void setCustomButtonListner(customButtonListener listener) {
    this.customListner = listener;
}

private Context context;

private ArrayList<String> data = new ArrayList<String>();

public ListAdapter(Context context, ArrayList<String> dataItem) {
    super(context, R.layout.child_listview, dataItem);
    this.data = dataItem;
    this.context = context;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent)     {
    ViewHolder viewHolder;
    if (convertView == null) {
        LayoutInflater inflater = LayoutInflater.from(context);
        convertView = inflater.inflate(R.layout.child_listview, null);

        viewHolder = new ViewHolder();

        viewHolder.text = (TextView) convertView
                .findViewById(R.id.childTextView);

       // textView= (TextView) convertView.findViewById(R.id.childTextView);
      //  viewHolder.text = textView;
        viewHolder.Button = (ImageButton) convertView
                .findViewById(R.id.childButton);
        viewHolder.text.setTextColor(Color.BLUE);
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }
    final String temp = getItem(position);
    viewHolder.text.setText(temp);
    viewHolder.Button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            if (customListner != null) {
                customListner.onButtonClickListner(position,temp);
            }

        }
    });

    return convertView;
}

public class ViewHolder {
    TextView text;
    ImageButton Button;
}

和我的主要活动:

    public class MainActivity extends Activity implements
    customButtonListener {

private ListView listView;
public TextView textView;

ListAdapter adapter;
ArrayList<String> dataItems = new ArrayList<String>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //G.currentActivity = this;
    setContentView(R.layout.activity_main);
    String[] dataArray = getResources().getStringArray(R.array.listdata);
    List<String> dataTemp = Arrays.asList(dataArray);
    dataItems.addAll(dataTemp);
    listView = (ListView) findViewById(R.id.listView);


   // tx.setTypeface(G.defaultFont);
    adapter = new ListAdapter(MainActivity.this, dataItems);
    adapter.setCustomButtonListner(MainActivity.this);
    listView.setAdapter(adapter);


}

@Override
public void onButtonClickListner(int position, String value) {

    Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
    sharingIntent.setType("text/plain");
    String shareBody = dataItems.get(position);
    sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject Here");
    sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
    startActivity(Intent.createChooser(sharingIntent, "Share via"));
}

我怎么能这样做?有什么建议吗?

4 个答案:

答案 0 :(得分:1)

另请注意,如果在代码中设置了textSize,则调用textView.setTextSize(X)会将数字(X)解释为SP。使用setTextSize(TypedValue.COMPLEX_UNIT_DIP, X)dp中设置值。

答案 1 :(得分:0)

您可以使用

设置文字大小
textView.setTextSize(16) //change value as per your need

使用

设置字体
Typeface custom_font = Typeface.createFromAsset(getAssets(), "fonts/font name.ttf");

textView.setTypeface(custom_font);

答案 2 :(得分:0)

您可能正在使用xml布局文件来定义列表视图项的布局。您始终可以修改可能在列表视图项布局中使用的文本视图的文本大小。

例如,

android:textSize="somedp"

答案 3 :(得分:0)

我建议你创建一个自定义视图。

只需创建一个包含一些textViews和ID&(如果你想要的话,一些图像视图)和一个类的布局。

IE:

在布局文件夹中: layout_custom_list.xml

在src / package foldeR上: custom_list_view

public CustomViewAdapter(Context context, String text1, String text2) {
    super(context);
    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    inflater.inflate(R.layout.layout_custom_list, this, true);
    tvText1 = (EditText) findViewById(R.id.textView1);
    tvText2 = (EditText) findViewById(R.id.textView2);
    tvText1.setText(text1);
    tvText2.setText(text2);}

然后在主要活动上,您必须有一个布局并运行此代码:

layout = (RelativeLayout) findViewById(R.id.layoutToAddList);
CustomViewAdapter newView = new CustomViewAdapter(this, "text1", "text2");
layout.addView(newView);

那就是它!