安卓开发如何在EditText左边添加行数

安卓开发如何在EditText左边添加行数,第1张

也可以重写EditText

package com.mycompany.myedit

import android.content.*

import android.widget.*

import android.graphics.*

import android.util.*

import android.text.*

import android.view.*

public class MyEditText extends EditText

{

private Paint line

public MyEditText(Context context,AttributeSet As){

super(context,As)

setFocusable(true)

line=new Paint()

line.setColor(Color.RED)

line.setStrokeWidth(2)

setPadding(95,0,0,0)

setGravity(Gravity.TOP)

}

@Override

protected void onDraw(final Canvas canvas)

{

// TODO: Implement this metho

if(getText().toString().length()!=0){

float y=0

Paint p=new Paint()

p.setColor(Color.GRAY)

p.setTextSize(40)

for(int l=0l<getLineCount()l++){

y=((l+1)*getLineHeight())-(getLineHeight()/4)

canvas.drawText(String.valueOf(l+1),0,y,p)

canvas.save()

}

}

int k=getLineHeight()

int i=getLineCount()

canvas.drawLine(90,0,90,getHeight()+(i*k),line)

int y=(getLayout().getLineForOffset(getSelectionStart())+1)*k

canvas.drawLine(0,y,getWidth(),y,line)

canvas.save()

canvas.restore()

super.onDraw(canvas)

}

}

参考链接:http://tieba.baidu.com/p/3948623080

在android中可能经常需要用到多行Edittext,代码如下: [html] view plain copy 在EditText里面添加android:minLines="3"即可,但是现实效果如下: 如果想要使输入从顶部开始,可以在xml文件里面添加一句 android:gravity="Top"即可

完全按你的要求写的,供参考:

前提是XML文件已创建好,在窗体里选择该XML文件,再行 *** 作:

窗体:

 //选择XML按钮

        private void btnXML_Click(object sender, EventArgs e)

        {

            DataTable dt = new DataTable()

            OpenFileDialog xmlFile = new OpenFileDialog()

            xmlFile.Filter = "*.xml|"

            xmlFile.Title = "请选择xml文件"

            if (xmlFile.ShowDialog() == DialogResult.OK)

            {

                this.txtPath.Text = xmlFile.FileName//在textBox1控件中显示选择的路径

                dt=GetXML(this.txtPath.Text)

            }

            if(!dt.Equals(null)&&dt.Rows.Count>0)

            LoadData(dt, dgvXML)//加载到窗体中

        }

        //保存按钮

        private void button1_Click(object sender, EventArgs e)

        {

            int n = SaveDgv()

            if (n > 0)

            {

                MessageBox.Show("保存成功!")

                DataTable dt = new DataTable()

                dt = GetXML(this.txtPath.Text)

                LoadData(dt, dgvXML)//刷新加载

            }

            else

            {

                MessageBox.Show("保存失败!")

                DataTable dt = new DataTable()

                dt = GetXML(this.txtPath.Text)

                LoadData(dt, dgvXML)//刷新加载

            }

        }

        //删除按钮

        private void btnDelete_Click(object sender, EventArgs e)

        {

            int n = 0//判断是否删除

            for (int i = 0 i < dgvXML.SelectedRows.Count i++)

            {

                string id = dgvXML.SelectedRows[i].Cells[0].Value.ToString()

                XmlDocument doc = new XmlDocument()

                doc.Load(this.txtPath.Text)

                XmlNodeList nod = doc.DocumentElement.ChildNodes

                XmlNode root = doc.DocumentElement

                foreach (XmlNode peo in nod)

                {

                    if (XmlNode.Equals(peo.SelectSingleNode("ID").InnerText, id))

                    {

                        root.RemoveChild(peo)//从根节点删除该ID的PERSON

                        doc.Save(this.txtPath.Text)

                        n++

                    }

                }

            }

            if (n > 0)

            {

                DataTable dt = new DataTable()

                dt = GetXML(this.txtPath.Text)

                LoadData(dt, dgvXML)//刷新加载

                MessageBox.Show("删除成功!")

            }

            else

            {

                MessageBox.Show("删除失败!")

            }

            

        }

        // DataGridView中加载数据

        private void LoadData(DataTable dt, DataGridView dgv)

        {

            dgv.Rows.Clear()//datagridview清空数据

            if (dt != null && dt.Rows.Count > 0)

            {

                dgv.Rows.Add(dt.Rows.Count)

                for (int i = 0 i < dt.Rows.Count i++)

                {

                    for (int k = 0 k < dt.Columns.Count k++)

                    {

                        dgv.Rows[i].Cells[k].Value = dt.Rows[i][k].ToString()//赋值

                    }

                }

            }

        }

        //datagridview添加行号

        private void dataGridView1_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)

        {

            e.Row.HeaderCell.Value = (e.Row.Index + 1).ToString()

        }

        //解析XML生成DATATABLE

        private List<string> IDList = new List<string>()//用来记录已有的ID,以在修改时判断是否新增

        private DataTable GetXML(string path)

        {

            DataTable dt = new DataTable()

            dt.Columns.Add("ID")

            dt.Columns.Add("NAME")

            dt.Columns.Add("SEX")

            dt.Columns.Add("PHONE")

            XmlDocument doc = new XmlDocument()

            doc.Load(path)

            XmlNodeList nod = doc.DocumentElement.ChildNodes

            foreach (XmlNode peo in nod)

            {

                XmlNodeList pe = peo.ChildNodes

                DataRow row = dt.NewRow()

                foreach (XmlNode p in pe)

                {

                    if (p.Name == "ID")

                    {

                        row["ID"] = p.InnerText.ToString()

                        IDList.Add(p.InnerText.ToString())//添加ID记录,以在修改时判断是否新增

                    }

                    if (p.Name == "NAME")

                    {

                        row["NAME"] = p.InnerText.ToString()

                    }

                    if (p.Name == "SEX")

                    {

                        row["SEX"] = p.InnerText.ToString()

                    }

                    if (p.Name == "PHONE")

                    {

                        row["PHONE"] = p.InnerText.ToString()

                    }

                }

                dt.Rows.Add(row)

            }

            return dt

        }

        //修改dgv数据后保存到XML文件

        private int SaveDgv()

        {

            int n = 0

            for (int i = 0 i < dgvXML.Rows.Count-1 i++)

            {

                XmlDocument doc = new XmlDocument()

                doc.Load(this.txtPath.Text)

                XmlNodeList nod = doc.DocumentElement.ChildNodes

                string id = dgvXML.Rows[i].Cells[0].Value.ToString()

                if (IDList.Contains(id)) //如果是已有的ID,则修改

                {

                    foreach (XmlNode peo in nod)

                    {

                        if (XmlNode.Equals(peo.SelectSingleNode("ID").InnerText, id))

                        {

                            peo.SelectSingleNode("NAME").InnerText = dgvXML.Rows[i].Cells[1].Value.ToString()//赋值姓名

                            peo.SelectSingleNode("SEX").InnerText = dgvXML.Rows[i].Cells[2].Value.ToString()//赋值性别

                            peo.SelectSingleNode("PHONE").InnerText = dgvXML.Rows[i].Cells[3].Value.ToString()//赋值电话

                            doc.Save(this.txtPath.Text)

                            n++

                            break//当找到该ID记录并修改后,跳出循环

                        }

                    }

                }

                else //否则为新增

                {

                    XmlNode root = doc.DocumentElement

                    XmlElement PERSON = doc.CreateElement("PERSON")

                    XmlElement ID = doc.CreateElement("ID")

                    ID.InnerText = id//赋值id

                    XmlElement NAME = doc.CreateElement("NAME")

                    NAME.InnerText = dgvXML.Rows[i].Cells[1].Value.ToString()//赋值姓名

                    XmlElement SEX = doc.CreateElement("SEX")

                    SEX.InnerText = dgvXML.Rows[i].Cells[2].Value.ToString()//赋值性别

                    XmlElement PHONE = doc.CreateElement("PHONE")

                    PHONE.InnerText = dgvXML.Rows[i].Cells[3].Value.ToString()//赋值电话

                    PERSON.AppendChild(ID)

                    PERSON.AppendChild(NAME)

                    PERSON.AppendChild(SEX)

                    PERSON.AppendChild(PHONE)

                    root.AppendChild(PERSON)

                    doc.Save(this.txtPath.Text)//保存

                    n++

                }

            }

            return n

        }

XML文件:

<?xml version="1.0" standalone="yes"?>

<List>

<PERSON>

  <ID>001</ID>

  <NAME>测一</NAME>

  <SEX>男男</SEX>

  <PHONE>13543234355</PHONE>

</PERSON>

<PERSON>

  <ID>002</ID>

  <NAME>再二</NAME>

  <SEX>女女</SEX>

  <PHONE>13245678903</PHONE>

</PERSON>

<PERSON>

  <ID>003</ID>

  <NAME>张三</NAME>

  <SEX>男男</SEX>

  <PHONE>13544678934</PHONE>

</PERSON>

<PERSON>

  <ID>005</ID>

  <NAME>王五</NAME>

  <SEX>女女</SEX>

  <PHONE>12345678900</PHONE>

</PERSON>

</List>


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/bake/11501821.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存