罗马范儿 2016-09-25 08:24 采纳率: 0%
浏览 2539

textpaint 与TextView 实现自动换行的问题

看No2部分, ListView的各个item都没显示全,换行的地方也不对,请问这里应该怎么改呢?

 package com.zhi.www.ui;

import android.app.Activity;
import android.graphics.Paint;
import android.os.Bundle;
import android.text.TextPaint;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;

import com.zhi.www.autolinefeed.R;

import java.util.Random;


//自动换行。在ListView中的每一行TextView中加入字符串并判断长度实现自动换行。考察窗口管理器,适配器,TextView和TextPaint
public class MainActivity extends Activity {
    private String string[] = { "美丽新世界", "这就是爱", "super star", "anyway", "开始懂了" };
    float text_size = 25.0f;
    private int windowWidth;
    private ListView listview;
    private MyAdapter adapter;
    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listview = (ListView) findViewById(R.id.listview);
        init();
        button = (Button) findViewById(R.id.btn_refresh);

        button.setOnClickListener(new View.OnClickListener() {//刷新按钮
            @Override
            public void onClick(View arg0) {
                adapter.notifyDataSetChanged();
            }
        });
    }

    private void init() {
        //No.1
        //开始写代码。要求实现获取屏幕宽度。
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        windowWidth = dm.widthPixels;
        //end_code
        adapter = new MyAdapter();
        listview.setAdapter(adapter);
    }
    class MyAdapter extends BaseAdapter {

        @Override
        public int getCount() {//设置显示10行数据
            return 10;
        }

        @Override
        public Object getItem(int position) {
            return position;
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            LinearLayout linearlayout = (LinearLayout) View.inflate(getApplicationContext(), R.layout.listview_item, null);
            Random random = new Random();
            int length = 0;
            for (int i = 0; i < 10; i++) {
                TextView textview = new TextView(MainActivity.this);
                TextPaint textpaint;

                //No.2
                //开始写代码。要求实现获取任意的string添加到textview中,每个字符串以“~”分隔,并获取textview的长度。

                textpaint = new TextPaint();
                textpaint.setTextSize(text_size);
                textpaint.setTextAlign(Paint.Align.LEFT);

                int index = random.nextInt(4);
                String tv = textview.getText().toString() + string[index] + "~";
                textview.setText(tv);
                length = (int)textpaint.measureText(tv);
                //end_code
                if(length > (windowWidth-100)){
                    break;
                }
                linearlayout.addView(textview);

            }
            return linearlayout;
        }
    }
}
  • 写回答

2条回答 默认 最新

  • devmiao 2016-09-25 17:04
    关注
    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能