原题目:手机短信为啥要限量陆17个汉字?HTC发短信有字数限制吗?

自家不想写壹篇大而全的篇章,也无力去找出那么多质地涵盖全体知识点,如若想打听更多音讯,那里有几篇作者感到写得正确的篇章能够提供参考,本文也有的借鉴了里面包车型客车内容。

/*****************2016年4月23日
更新********************************/

/*****************2016年4月23日
更新********************************/

用过功效机的同伙们都会清楚,每一条短信的篇幅被界定在陆1几个汉字,超越之后就会被拆分为二条短信发送。

  • 《字符编码的故事:ASCII,GB231二,Unicode,UTF-八,UTF-1陆》
  • 《unicode,ansi,utf-八,unicodebigendian编码的界别》

知乎:什么是 7 位元的字符? 英文字符难道不是 8 bit
是八个字符?一条短信到底能容下 140 个英文字符还是 160 个?

知乎:什么是 7 位元的字符? 英文字符难道不是 八 bit
是三个字符?一条短信到底能容下 140 个英文字符依然 160 短信发送器,字符编码些许事。个?

为啥要限量在6公斤个汉字?多设置一点不好吧?

基础概念

  • 字符
    字符是各样文字和标志的总称,包罗各国家文字、标点符号、图形符号、数字等,以至还足以归纳无法呈现的字符(比方ASCII规范定义了1三十多少个字符,个中三十三个字符比相当的小概出示)。
  • 字符集
    为了使Computer能够管理字符音讯,首先要调控选用哪些字符。那样就产生了贰个成团,恐怕说2个表,称为字符表(character
    repertoire)。当然,也可以以为那正是3个字符集(character set)。
    比方说,将富有的英文字母放在1块儿得以结合1个字符集,将具备的汉字放在一同能够构成3个字符集,等等。
  • 编码字符集
    对二个字符聚焦的具有字符进行编号,那种编号后的字符集叫做编码字符集(那里的编码仅仅指编号,分化于下文中的编码)。常见的编码字符集有ASCII、Unicode、GBK等。

能够如此来精晓:字符串是由字符构成,字符在管理器硬件中通过二进制格局储存,那种二进制格局正是编码。借使直白使用
“字符串️字符️2进制表示(编码)”
,会追加差别种类编码之间转变的繁杂。所以引入了1个抽象层,“字符串️字符️与仓库储存非亲非故的代表️贰进制表示(编码)”
,那样就足以用1种与积累非亲非故的款型表示字符,分化的编码之间转移时方可先转移到这些抽象层,然后再改动为其它编码方式。
举个例证:Unicode 正是 “与仓库储存毫不相关的象征”,UTF-8 就是 “贰进制表示”。

维基百Corey「短信」词条之类概念「短信」:

维基百Corey「短信」词条之类概念「短信」:

事实上,是有历史由来的。

ASCII字符集

习以为常说的ASCII字符集不包罗扩张集,唯有127个字符,因此其编码的囤积只要求利用多少个bit,一个字节丰富了高高的位永久都是0。比方字符’0’,其代码是十六进制的0x30,二进制表示为00110000。

此地说个和ASCII字符集有关的编码方案,GSM标准协议规定单条短信最多存款和储蓄1三十八个字节的内容,即使短信内容只含有ASCII字符,因为ASCII字符的多寡第三位必定是0,所以GSM规范中分明了7bit编码的短信格式,只用8个bit来连接存款和储蓄ASCII字符,那样原本1四十多个八bit的贮存空间,就足以储存157个七bit的数目。假诺哪个人未来手上还有NOKIA手提式无线电话机,能够拿起来看看只含有ASCII字符的短信是还是不是足以输入156个字符,假设短信中含有了非ASCII字符(比方汉语),那么富有字符都会化为双字节囤积的编码(UCS-2编码),一条短信的内容就复苏成只好发送柒十个字符。现近日的智能手提式无线电话机多数都扶助短信拼接,并不是说单条短信的体量扩充了,而是将您编写的超越单条短信体积的短信分成多条发送,运行商也是按多条短信计的。

壹则短信能够容纳140字节,约等于约1伍拾陆个七人元的字符、或是136个八-bit的字符,粤语字、罗马尼亚语字与日文字这几个占2-byte的字符则可容纳七21个。(使用Unicode系统)。那一个不包涵额外的类别情报。

1则短信能够容纳140字节,也正是约156个7人元的字符、或是1叁拾4个八-bit的字符,汉语字、菲律宾语字与日文字这一个占二-byte的字符则可容纳六十八个。(使用Unicode系统)。这几个不包含额外的系统情报。

由来要追溯到上世纪80年间,Friedhelm
希尔ebrand是现行反革命手提式有线电话机短信技艺的主发明人,七十多个汉字(1陆拾1个英文字符)即是他引起的。

GB体系字符集

中文情形下一旦要健康展现字符,仅依附ASCII字符集是不行的,因而我们国家制定了1多元的国家标准(GB),当中就包罗GB231二、GB1两千、GBK、GB18030……,最新的业内是GB18030,包括70243个字符。

再有作者的手提式有线电电话机怎么是最多 150 个英文字母?那是 柒.5 位元的编码格局吗?

还有自个儿的无绳电话机怎么是最多 150 个英文字母?那是 柒.5 位元的编码格局吗?

金沙网址 1

Unicode字符集

Unicode字符集由多语言软件创设商组成的合并码联盟(Unicode
Consortium)与国标化组织的ISO-106肆陆职业组制订,为种种语言中的各样字符钦命统一且唯1的代码点,以知足跨语言、跨平台调换和管理公事的渴求。中、日、韩的三种文字占用了Unicode中0x3000到0x9FFF的有的
Unicode近来布满采纳的是UCS-二编码,它用七个字节来编码一个字符,
例如汉字”一”的编码是0x四E00。事实上Unicode对汉字帮助不怎么好,那也是不可能的,简体和复杂性总共有6七万个汉字,而UCS-二最多能表示65五叁18个,所以Unicode只可以排除有个别差不离不用的汉字,幸亏GB2312字符聚集常用的简体汉字也只是67陆贰个,为了能表示具有汉字,Unicode也有UCS-四标准,就是用
五个字节来编码字符。

Unicode代码点范围为0x00x10FFFF,共计1114112个代码点,划分为编号01陆的1多少个字符平面,种种平面包蕴655叁十6个代码点。个中编号为0的平面最为常用,称为基本多语种平面(Basic
Multilingual Plane, BMP);其他平面则名叫帮忙语言平面。

为了描述三个代码点,可以接纳U加十6进制整数的艺术。比方,U+0041意味英文大写字母A,U+四E00代表汉字”1”。

 

 

她及时应用一台打字机随便打出一些由字母组成的消息,令人古怪的是,这几个新闻每一条都是只有1两行,而且总字数也不会超过156个,160便成为她认为颇具神奇的数字。

编码

有关编码方式,当然能够运用类似ASCII字符集的编码方式——代码点等值转变法(那是自己要好起的名字)。既然Unicode代码点的值的限定是0~0x拾FFF,那么能够用八个贰一bit的编码单元来编码,直接把代码点等值转变到二1bit的贰进制体系。

只是那存在2个上空应用的难题,比方对于利用葡萄牙共和国(República Portuguesa)语的人来说,ASCII基本得以满意使用。如果运用ASCII码,只需求3个字节来存款和储蓄字符,不过若选拔刚才的笔触,供给接近3个字节来积累,那显著是荒废空间的。

设若供给帮助的字符集再少一些,仅补助理编辑号0的平面,那至少也有655三1捌个字符,需求1陆bit的上空(贰字节)来存款和储蓄1个字符,即UCS-2编码,那种编码用来积攒ASCII字符也是一种浪费。

Unicode在非常短一段时间内无法推广,直到网络的面世,为消除Unicode如何在网络上传输的主题素材,于是面向传输的大队人马
UTF(UCS Transfer
Format)标准出现了,顾名思义,UTF-八就是每一趟8个位传输数据,而UTF-16正是历次1二个位。UTF-捌正是在互联英特网使用最广的1种Unicode的达成格局,那是为传输而设计的编码,并使编码无国界,那样就能够来得全球上具有知识的字符了。

yskin:

yskin:

Friedhelm
希尔ebrand四陆周岁的时候,他以为近日手机短信1伍十六个字符已经够用使用,于是决定把这些数字定为一条短信内容的篇幅上线。

UTF-8

UTF-八最大的三个特征,便是它是1种变长的编码方式。它能够接纳一~四个字节表示二个标识,依据不一样的标识而变化字节长度,当字符在ASCII
码的界定期,就用多个字节表示,保留了ASCII字符三个字节的编码做为它的一部分,注意的是Unicode多少个华语字符占二个字节,而UTF-捌三个汉语字符占二个字节)。从Unicode到UTF-八并不是直接的相应,而是要过局地算法和规则来改造。

Unicode符号范围(十六进制) UTF-8编码方式(二进制)
0000 0000-0000 007F 0xxxxxxx
0000 0080-0000 07FF 110xxxxx 10xxxxxx
0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

举个例证:
要么用中文“一”,其Unicode值为0x四E00,落在0800-FFFF的限定内,事实上粤语基本上都在那一个区域。0x四E00的二进制表示为0100111000000000,调换来UTF-捌就是11100100 10111000一千0000,对应的十陆进制表示是0xE四 0xB8 0x80。

六个人元字符正是指规范ASCII去掉最高位的0。以那种办法开始展览编码,在美利坚合众国这么的国家,发送的短信字符都是ASCII码表里的,所以没须求浪费一个字位。

多少人元字符就是指规范ASCII去掉最高位的0。以这种艺术打开编码,在U.S.那样的国度,发送的短信字符都以ASCII码表里的,所以没须求浪费一个字位。

随着短信才干的迈入,各命宫营商也苦恼把1五十五个字符作为单条短信的上线。

UTF-16

UTF-1陆的编码单元是16bit,对于各样代码点,选用一个或许1个编码单元来表示,由此那是三个变长表示。

 

 

金沙网址 2

UTF-32

UTF-3贰选用代码点等值调换法,将每种代码点编码为3个3二bit的编码单元(4字节),因而空间成效异常的低,不比别的Unicode编码应用普遍。

而短信协议支持七字位、八字位、1陆字位三种编码,七字位用于美利坚协作国,可以发送1伍十八个字母,八字位用于南美洲国度,1陆字位用于中日韩俄等国家,使用UCS-二编码。而UCS-二把富有Unicode字符编码为2字节,所以固然英文字母也会编码成贰个字节。

而短信协议扶助7字位、八字位、1陆字位三种编码,7字位用于美利坚联邦合众国,能够发送158个字母,八字位用于欧洲江山,1陆字位用于中国和扶桑韩俄等国家,使用UCS-2编码。而UCS-贰把装有Unicode字符编码为二字节,所以纵然英文字母也会编码成三个字节。

对编制程序才干有所领悟的同校知道,由于字符本身使用编码格局的不等,最后将招致字符个数的例外。对于英文字母来说,一般选取七位ASCII编码,粤语则为7位UCS-2编码,须求占用三个字节。

工具推荐

此处有个网站提供的转码效果越来越好,比起一些站长工具更标准。

金沙网址 3

Paste_Image.png

上海体育场所是行使该网址物色普通话字符“一”的结果,能够阅览其Unicode值为U+四E00,UTF-八编码为0xE4
0xB八 0x80,在U奥迪Q7L中须要转码为%E四%B捌%80,在js脚本中则是\u4e00……。

 

 

15九个英文字符要用两个人ASCII编码来张开表示,供给柒*163位。但是换来7人UCS-二编码表示,则必要7*160/八人。同时,由于中文汉字供给占用二个字符,那样汉语字符总量正是7*160/8/二,刚好等于70。

举多少个栗子

行使Windows Mobile
陆系统做测试,新建短信后输入3个英文字母,上面呈现1/160,再输入3个显得2/160,那正是7字位状态,能够在140字节里装下1陆十五个字符。当再输入六当中华夏族民共和国字的时候,上面包车型客车显得立时成为3/70,这就是1陆字位状态,每一个字符都占二个字节,140字节只可以装下八十八个字符,哪怕里面是66个英文字符加3个汉字。

选拔Windows Mobile
6系统做测试,新建短信后输入3个英文字母,上面显示1/160,再输入三个展现2/160,那正是七字位状态,能够在140字节里装下1陆十三个字符。当再输入6个中夏族民共和国字的时候,下边包车型客车展现立刻成为3/70,那正是1陆字位状态,种种字符都占三个字节,140字节只可以装下70个字符,哪怕里面是陆17个英文字符加3个汉字。

那正是怎么运转商规定单条短信的方块字限制为74个的案由。

有道翻译

用有道翻译的API来做示范,我们通过API获取单词”word”的汉语翻译。

GET http://fanyi.youdao.com/openapi.do?keyfrom=WoxLauncher&key=1247918016&type=data&doctype=json&version=1.1&q=word

回去的JSON如下所示:

{
  "translation": [
    "词"
  ],
  "basic": {
    "us-phonetic": "wɝd",
    "phonetic": "wɜːd",
    "uk-phonetic": "wɜːd",
    "explains": [
      "n. [语] 单词;话语;消息;诺言;命令",
      "vt. 用言辞表达",
      "n. (Word)人名;(英)沃德"
    ]
  },
  "query": "word",
  "errorCode": 0,
  "web": [
    {
      "value": [
        "单词",
        "字",
        "字 (计算机)"
      ],
      "key": "word"
    },
    {
      "value": [
        "构词法",
        "造词法",
        "词性转换"
      ],
      "key": "Word Formation"
    },
    {
      "value": [
        "关键字",
        "中心词",
        "关键词"
      ],
      "key": "key word"
    }
  ]
}

再次回到的始末涵盖中文,从响应头我们可以看出重返的JSON使用了UTF-8编码:

金沙网址 4

Paste_Image.png

用Wireshark抓包看看具体内容:

金沙网址 5

Paste_Image.png

如上海体育场面所示,translation那一个key对应的数组内容应当是"词",所以大家看到高亮区域的内容是22 E8 AF 8D 22,0x22对应ASCII字符"金沙网址,,0xE8
0xAF 0x八D便是普通话的UTF-8编码。

 

 

P.S
对于尚未使用过效率机的人来说,恐怕一直都不精晓原来短信是有字数限制的。回到搜狐,查看更多

ONE·一个

本条API是由此抓包抓出来的,哪个人让她们不走https呢?

GET http://v3.wufazhuce.com:8000/api/reading/index

重临数据太多,仅截取一小段进展解析。

{
  "res": 0,
  "data": {
    "essay": [
      {
        "content_id": "2176",
        "hp_title": "软糖| “白日梦” _ 初夏的味道",
        "hp_makettime": "2017-04-03 06:00:00",
        "guide_word": "我们每周会选择一个主题,由七个作者绘制不同风格的短篇漫画,每天一幅。",
        "start_video": "",
        "author": [
          {
            "user_id": "7742828",
            "user_name": "双麒_宋 ",
            "desc": "因爱而画,美好的作品产生于最压抑的欲望。",
            "wb_name": "",
            "is_settled": "0",
            "settled_type": "0",
            "summary": "因爱而画,美好的作品产生于最压抑的欲望。",
            "fans_total": "574",
            "web_url": "http://image.wufazhuce.com/FoPpyeue8ajoRlZ4Fy39a56o4NO-"
          }
        ],
    ......
    }
......
}

回去的内容包罗普通话,但从响应头大家看不到再次回到的JSON使用了什么编码格式:

金沙网址 6

Paste_Image.png

用Wireshark抓包看看具体内容:

金沙网址 7

Paste_Image.png

如上海体育地方所示,那个API请求重临的JSON数据输出的是中文的Unicode转义字符,那实际也是JS对中文的正统管理方式,估算后台大概是NodeJS达成的。

本身是咕咕鸡,三个还在不停学习的全栈程序猿。
热爱生活,喜欢跑步,家庭是本人不住向前向上的引力。

假诺短信超越长度,那么系统就自动分成多条短信来发。因为要进入一些标志性字符以表示顺序,所以英文每条一伍二个,普通话每条67个。接收方借使是新一点的无绳电话机就会把这几条合并后彰显给用户,老一点的手提式有线电话机就会独家呈现每条短信。

一旦短信超越长度,那么系统就自动分成多条短信来发。因为要加盟一些标记性字符以象征顺序,所以英文每条一伍一个,中文每条6多少个。接收方假诺是新一点的无绳电话机就会把这几条合并后显示给用户,老一点的无绳电话机就会独家彰显每条短信。

小编:

 

 

诸如,输入七10个汉语,下边呈现70/70,再加一个时上面展现“71/13四(2短新闻)”。输入1五十四个英文,上边突显160/160,再加三个出示“1633.33%06(二短音讯)”。

举个例子,输入6几个中文,下边展现70/70,再加1个时上边呈现“71/13四(二短音讯)”。输入1伍二十个英文,上边突显160/160,再加1人作品体现“1陆33.33%0陆(二短新闻)”。

 

 

接纳13九邮箱做测试,里面发送短信无论怎么着字符都以以UCS-二编码,当输入壹三十八个字符时,展现将按三条短信计费。其它,表达里还涉及,最七只好补助350字的短信。

选拔139邮箱做测试,里面发送短信无论怎么着字符都以以UCS-2编码,当输入1三12个字符时,展现将按3条短信计费。此外,表明里还关系,最三只可以援救350字的短信。

 

 

楼主提到的150字限制没据说过,英文谷歌(Google)没找到,中文谷歌只搜到09年时电信在测试150字符短信系统。

楼主提到的150字限制没据他们说过,英文Google没找到,普通话Google只搜到09年时邮电通讯在测试150字符短信系统。

/*************************************************/

/*************************************************/

  1. 拖动控件的话编写翻译器自动加的layout_blow=”@+id/xxx” id这几个部分未有+号
    Ctrl+f批量替换
    艾德itText展现的行数android:singleLine=”true”一行, android:lines=”5″
    多行
    模拟器超时原因 Computer配置低,修改超时时间,模拟器socket挂了,重启一下
    短信api SmsManager如若过时,导包的主题素材gsm
    2G一时的,倘若3个类不能new对象,那么它一定期存款在2个getDefaut只怕getInstance的静态方法

  2. SmsManager的方法
    sendDataMessage(发送彩信)
    sendMultipartTextMessage(发送多条音讯),
    sendTextMessage(目的手提式有线话机, null(来源手提式有线电话机不协助), text, sentIntent,
    deliveryIntent)后五个参数,延迟报告和送达报告,不爱抚填null
    急需那些权力 android.permission.SEND_SMS

  1. 拖动控件的话编写翻译器自动加的layout_blow=”@+id/xxx” id那个部分未有+号
    Ctrl+f批量替换
    艾德itText展现的行数android:singleLine=”true”壹行, android:lines=”伍”
    多行
    模拟器超时原因 Computer配置低,修改超时时间,模拟器socket挂了,重启一下
    短信api SmsManager要是过时,导包的主题素材gsm
    2G一时的,借使3个类无法new对象,那么它必然存在1个getDefaut大概getInstance的静态方法

  2. SmsManager的方法
    sendDataMessage(发送彩信)
    sendMultipartTextMessage(发送多条音讯),
    sendTextMessage(目的手提式有线电电话机, null(来源手机不支持), text, sentIntent,
    deliveryIntent)后四个参数,延迟报告和送达报告,不关怀填null
    急需这一个权力 android.permission.SEND_SMS

短信都要最大尺寸的限量的,android提供了二个api用来拆分短信divideMessage(),重返ArrayList<String>,循环境与发展送for(String
str:contents){}

短信都要最大尺寸的限定的,android提供了1个api用来拆分短信divideMessage(),再次回到ArrayList<String>,循环境与发展送for(String
str:contents){}

急需开启多少个模拟器测试,电话号码正是端口号,此成效能够做出短信群发器

亟需张开多个模拟器测试,电话号码正是端口号,此作用能够做出短信群发器

activity代码:

activity代码:

package com.tsh.sms;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {
    private EditText et_number;
    private EditText et_content;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button bt_send=(Button) findViewById(R.id.bt_send);
        et_number=(EditText) findViewById(R.id.et_number);
        et_content=(EditText) findViewById(R.id.et_content);
        bt_send.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.bt_send:
            String number=et_number.getText().toString().trim();
            String content=et_content.getText().toString().trim();
            if(TextUtils.isEmpty(number)||TextUtils.isEmpty(content)){
                Toast.makeText(this, "电话号码和内容都不能为空", Toast.LENGTH_SHORT).show();
                return;
            }
            SmsManager smsManager=SmsManager.getDefault();
            ArrayList<String> contents = smsManager.divideMessage(content);
            for(String str:contents){
                smsManager.sendTextMessage(number, null, str, null, null);
            }

            break;
        }
    }
}
package com.tsh.sms;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {
    private EditText et_number;
    private EditText et_content;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button bt_send=(Button) findViewById(R.id.bt_send);
        et_number=(EditText) findViewById(R.id.et_number);
        et_content=(EditText) findViewById(R.id.et_content);
        bt_send.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.bt_send:
            String number=et_number.getText().toString().trim();
            String content=et_content.getText().toString().trim();
            if(TextUtils.isEmpty(number)||TextUtils.isEmpty(content)){
                Toast.makeText(this, "电话号码和内容都不能为空", Toast.LENGTH_SHORT).show();
                return;
            }
            SmsManager smsManager=SmsManager.getDefault();
            ArrayList<String> contents = smsManager.divideMessage(content);
            for(String str:contents){
                smsManager.sendTextMessage(number, null, str, null, null);
            }

            break;
        }
    }
}

 

 

layout代码

layout代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.tsh.sms.MainActivity" >

    <TextView
        android:id="@+id/tv_input_number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="@string/input_tel_number" />

    <EditText
        android:id="@+id/et_number"
        android:singleLine="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/tv_input_number"
        android:ems="10"
        android:inputType="phone" >

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/tv_number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/et_number"
        android:text="@string/sms_content" />

    <EditText
        android:id="@+id/et_content"
        android:lines="5"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/tv_number"
        android:ems="10" />

    <Button
        android:id="@+id/bt_send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/et_content"
        android:text="@string/send" />

</RelativeLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.tsh.sms.MainActivity" >

    <TextView
        android:id="@+id/tv_input_number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="@string/input_tel_number" />

    <EditText
        android:id="@+id/et_number"
        android:singleLine="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/tv_input_number"
        android:ems="10"
        android:inputType="phone" >

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/tv_number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/et_number"
        android:text="@string/sms_content" />

    <EditText
        android:id="@+id/et_content"
        android:lines="5"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/tv_number"
        android:ems="10" />

    <Button
        android:id="@+id/bt_send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/et_content"
        android:text="@string/send" />

</RelativeLayout>

 

 

divideMessage

divideMessage

相关文章

网站地图xml地图