原标题:手提式无线电话机短信为何要限制7十个汉字?黑莓发短信有字数限制吗?

自个儿不想写一篇大而全的作品,也无力去搜索那么多材质涵盖全体知识点,倘使想理解越多新闻,那里有几篇笔者以为写得科学的小说能够提供参考,本文也某个借鉴了当中的始末。

/*****************手提式有线电话机短信为啥要界定七十一个汉字,字符编码些许事。2016年4月23日
更新********************************/

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

用过作用机的伴儿们都会精通,每一条短信的篇幅被限定在陆十五个汉字,当先之后就会被拆分为二条短信发送。

  • 《字符编码的轶事:ASCII,GB231二,Unicode,UTF-八,UTF-16》
  • 《unicode,ansi,utf-八,unicodebigendian编码的区别》

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

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

为什么要界定在陆十九个汉字?多设置一点糟糕啊?

基本功概念

  • 字符
    字符是各样文字和符号的总称,包罗各国家文字、标点符号、图形符号、数字等,以致仍是能够包蕴无法出示的字符(比如ASCII标准定义了1二十七个字符,当中三16个字符没办法展现)。
  • 字符集
    为了使Computer能够管理字符音信,首先要调节采纳哪些字符。那样就产生了三个凑合,只怕说三个表,称为字符表(character
    repertoire)。当然,也足以感觉这正是3个字符集(character set)。
    比方,将享有的英文字母放在一齐能够构成一个字符集,将富有的方块字放在一同能够组成八个字符集,等等。
  • 编码字符集
    对二个字符集中的有所字符进行编号,那种编号后的字符集叫做编码字符集(那里的编码仅仅指编号,不相同于下文中的编码)。常见的编码字符集有ASCII、Unicode、GBK等。

能够这么来通晓:字符串是由字符构成,字符在计算机硬件中经过二进制情势积累,这种2进制格局正是编码。假使直接使用
“字符串️字符️贰进制表示(编码)”
,会大增分化体系编码之间转移的纷纭。所以引进了多个抽象层,“字符串️字符️与积累无关的意味️2进制表示(编码)”
,那样就能够用一种与仓库储存无关的样式表示字符,区别的编码之间转换时能够先转移到那么些抽象层,然后再转换为任何编码格局。
比如:Unicode 就是 “与存款和储蓄非亲非故的代表”,UTF-8 便是 “2进制表示”。

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

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

实际上,是有历史原因的。

ASCII字符集

一般性说的ASCII字符集不包涵扩大集,唯有1二十七个字符,因而其编码的贮存只必要选择三个bit,一个字节丰富了参天位恒久都是0。比方字符’0’,其代码是十六进制的0x30,贰进制表示为001一千0。

此间说个和ASCII字符集有关的编码方案,GSM规范协议规定单条短信最多存款和储蓄1四13个字节的剧情,倘若短信内容只包括ASCII字符,因为ASCII字符的数额第四位必定是0,所以GSM标准中规定了7bit编码的短信格式,只用七个bit来连接存款和储蓄ASCII字符,那样原本1四十个八bit的存款和储蓄空间,就能够积攒1五贰拾个柒bit的数据。假如什么人以往手上还有NOKIA手提式有线话机,能够拿起来看看只包蕴ASCII字符的短信是或不是可以输入1伍16个字符,假若短信中涵盖了非ASCII字符(举个例子中文),那么全体字符都会成为双字节积存的编码(UCS-二编码),一条短信的剧情就过来成只可以发送6二十个字符。现近年来的智能手提式无线电话机多数都扶助短信拼接,并不是说单条短信的体量扩张了,而是将你编写的越过单条短信体积的短信分成多条发送,运行商也是按多条短信计的。

一则短信能够容纳140字节,约等于约156个7人元的字符、或是1三十7个捌-bit的字符,中文字、爱尔兰语字与日文字那个占二-byte的字符则可容纳陆十八个。(使用Unicode系统)。那几个不包涵额外的连串情报。

1则短信能够容纳140字节,相当于约1伍十四个7位元的字符、或是13柒个八-bit的字符,中文字、斯拉维尼亚语字与日文字那些占二-byte的字符则可容纳陆18个。(使用Unicode系统)。这个不包含额外的种类情报。

缘由要追溯到上世纪80时期,Friedhelm
希尔ebrand是后天手提式有线电话机短信手艺的主发明人,六十一个汉字(1伍拾陆个英文字符)正是她挑起的。

GB连串字符集

美高梅集团网站 ,粤语境况下假诺要正规突显字符,仅依据ASCII字符集是那些的,因而大家国家制定了1多种的国家标准(GB),在那之中就总结GB231二、GB13000、GBK、GB18030……,最新的职业是GB18030,包涵70二四十多少个字符。

再有自身的手机怎么是最多 150 个英文字母?那是 七.五 位元的编码情势吗?

还有笔者的手提式有线电话机怎么是最多 150 个英文字母?那是 7.5 位元的编码格局吗?

美高梅集团网站 1

Unicode字符集

Unicode字符集由多语言软件创设商组成的统壹码结盟(Unicode
Consortium)与国标化组织的ISO-106四陆专门的工作组制订,为各个语言中的种种字符钦定统一且唯一的代码点,以满意跨语言、跨平台转变和拍卖文件的渴求。中、日、韩的二种文字占用了Unicode中0x3000到0x九FFF的有的
Unicode近期大面积使用的是UCS-二编码,它用四个字节来编码贰个字符,
比方汉字”1″的编码是0x四E00。事实上Unicode对汉字帮助不怎么好,这也是不能的,简体和错综复杂总共有陆七万个汉字,而UCS-二最多能表示65伍3贰拾个,所以Unicode只能排除有的大致不用的汉字,万幸GB231贰字符聚集常用的简体汉字也可是67陆二个,为了能表示具有汉字,Unicode也有UCS-四标准,即是用
伍个字节来编码字符。

Unicode代码点范围为0x00x10FFFF,共计1114112个代码点,划分为编号01陆的一几个字符平面,各种平面包蕴65537个代码点。个中编号为0的平面最为常用,称为基本多语种平面(Basic
Multilingual Plane, BMP);别的平面则称之为协助语言平面。

为了描述1个代码点,可以选拔U加十六进制整数的法子。举个例子,U+004壹意味着英文大写字母A,U+4E00表示汉字”1”。

 

 

他即时使用一台打字机随便打出壹部分由字母组成的音讯,令人奇异的是,这个消息每一条都是唯有1两行,而且总字数也不会超越16拾三个,160便成为他备感颇具美妙的数字。

编码

有关编码格局,当然能够采取类似ASCII字符集的编码格局——代码点等值调换法(那是自身要好起的名字)。既然Unicode代码点的值的限定是0~0x10FFF,那么能够用三个二一bit的编码单元来编码,直接把代码点等值转变来二一bit的2进制类别。

而是这存在一个上空应用的难点,比方对于利用葡萄牙语的人来说,ASCII基本得以满足使用。借使运用ASCII码,只须求二个字节来存储字符,不过若选用刚才的思路,须要接近1个字节来积存,那显著是荒废空间的。

设若急需扶助的字符集再少一些,仅支持理编辑号0的平面,那至少也有65伍三10多少个字符,需求1陆bit的空中(二字节)来存款和储蓄二个字符,即UCS-二编码,这种编码用来积累ASCII字符也是一种浪费。

Unicode在十分长1段时间内不能够松手,直到互连网的面世,为赶尽杀绝Unicode如何在互联网上传输的主题素材,于是面向传输的许多UTF(UCS Transfer
Format)标准出现了,顾名思义,UTF-八就是历次九个位传输数据,而UTF-1陆正是每一次14个位。UTF-八即是在互联互连网运用最广的1种Unicode的贯彻格局,那是为传输而规划的编码,并使编码无国界,那样就足以体现满世界上具备知识的字符了。

yskin:

yskin:

Friedhelm
希尔ebrand肆陆虚岁的时候,他认为近来手提式有线电话机短信1五15个字符已经够用使用,于是决定把那些数字定为一条短信内容的字数上线。

UTF-8

UTF-8最大的一个特征,正是它是一种变长的编码方式。它能够行使一~伍个字节表示3个标识,根据分裂的符号而变化字节长度,当字符在ASCII
码的限按时,就用3个字节表示,保留了ASCII字符二个字节的编码做为它的一片段,注意的是Unicode3个国语字符占二个字节,而UTF-八四个中文字符占1个字节)。从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

举个例子:
大概用中文“1”,其Unicode值为0x肆E00,落在0800-FFFF的限制内,事实上中文基本上都在这几个区域。0x四E00的2进制表示为0100111000000000,调换到UTF-捌正是11十0拾0 1011一千一千0000,对应的十6进制表示是0xE四 0xB八 0x80。

几人元字符就是指标准ASCII去掉最高位的0。以这种格局进行编码,在U.S.A.那样的国度,发送的短信字符都以ASCII码表里的,所以没须求浪费二个字位。

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

乘机短信才干的开发进取,各命宫营商也干扰把1陆十个字符作为单条短信的上线。

UTF-16

UTF-16的编码单元是1陆bit,对于每种代码点,选用3个可能贰个编码单元来表示,因而这是三个变长表示。

 

 

美高梅集团网站 2

UTF-32

UTF-3二选择代码点等值转变法,将各种代码点编码为三个3二bit的编码单元(4字节),由此空间效能相当低,不如其余Unicode编码应用广泛。

而短信协议辅助柒字位、八字位、1陆字位3种编码,⑦字位用于U.S.A.,能够发送156个字母,8字位用于澳大哈Rees堡国度,16字位用于中国和东瀛韩俄等国家,使用UCS-2编码。而UCS-2把具有Unicode字符编码为2字节,所以固然英文字母也会编码成一个字节。

而短信协议协理七字位、8字位、16字位三种编码,7字位用于美国,能够发送16拾一个字母,八字位用于亚洲江山,1陆字位用于中国和日本韩俄等国家,使用UCS-②编码。而UCS-2把具备Unicode字符编码为二字节,所以固然英文字母也会编码成1个字节。

对编制程序手艺有所领会的同室知道,由于字符本身使用编码格局的不等,最后将变成字符个数的例外。对于英文字母来讲,一般选择八个人ASCII编码,中文则为6人UCS-二编码,须求占用二个字节。

工具推荐

此处有个网站提供的转码效果相当好,比起一些站长工具更规范。

美高梅集团网站 3

Paste_Image.png

上海体育场地是选取该网址搜索粤语字符“一”的结果,能够见到其Unicode值为U+4E00,UTF-八编码为0xE4
0xB捌 0x80,在URubiconL中必要转码为%E4%B八%80,在js脚本中则是\u4e00……。

 

 

15柒个英文字符要用柒人ASCII编码来打开表示,要求7*1陆拾几个人。不过换来七位UCS-2编码表示,则须要七*160/陆位。同时,由于粤语汉字须求占用一个字符,那样中文字符总量正是七*160/8/贰,刚好等于70。

举多少个栗子

采用Windows Mobile
6系统做测试,新建短信后输入二个英文字母,上边展现1/160,再输入3个显得2/160,那正是7字位状态,能够在140字节里装下1陆12个字符。当再输入一当中华人民共和国字的时候,下边包车型大巴呈现立即成为3/70,那就是1陆字位状态,每一个字符都占一个字节,140字节只可以装下六十多少个字符,哪怕里面是六十五个英文字符加三个汉字。

行使Windows Mobile
陆系统做测试,新建短信后输入二个英文字母,上边显示1/160,再输入二个展现2/160,那就是七字位状态,可以在140字节里装下1陆二十一个字符。当再输入一个汉字的时候,上面包车型大巴显得立即成为3/70,那就是1陆字位状态,每种字符都占一个字节,140字节只可以装下陆16个字符,哪怕里面是6十六个英文字符加1个汉字。

那正是为啥运转商规定单条短信的汉字限制为7四个的由来。

有道翻译

用有道翻译的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-八编码:

美高梅集团网站 4

Paste_Image.png

用Wireshark抓包看看具体内容:

美高梅集团网站 5

Paste_Image.png

如上图所示,translation其1key对应的数组内容应当是"词",所以大家看到高亮区域的剧情是22 E8 AF 8D 22,0x22对应ASCII字符",0xE8
0xAF 0x8D正是中文的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完结的。

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

万一短信超越长度,那么系统就活动分成多条短信来发。因为要进入一些标记性字符以表示顺序,所以英文每条一51个,中文每条陆多少个。接收方如若是新一点的无绳电话机就会把这几条合并后出示给用户,老一点的无绳电话机就会独家突显每条短信。

假设短信当先长度,那么系统就活动分成多条短信来发。因为要加盟一些标记性字符以代表顺序,所以英文每条15二个,汉语每条六七个。接收方假设是新一点的无绳电话机就会把这几条合并后显得给用户,老一点的手提式无线电话机就会分别呈现每条短信。

主要编辑:

 

 

诸如,输入陆拾7个粤语,下边显示70/70,再加贰个时下边呈现“71/13四(二短音信)”。输入1伍21个英文,下边突显160/160,再加1个来得“1陆三分之一0陆(二短信息)”。

比如,输入陆二十一个普通话,上边彰显70/70,再加叁个时上面呈现“71/13四(贰短音信)”。输入1陆18个英文,上面呈现160/160,再加三个显得“16三分之一0陆(二短音信)”。

 

 

动用13九信箱做测试,里面发送短信无论什么样字符都以以UCS-二编码,当输入133个字符时,突显将按三条短信计费。此外,表明里还提到,最四只好帮忙350字的短信。

动用13玖信箱做测试,里面发送短信无论什么样字符都以以UCS-2编码,当输入一三13个字符时,突显将按叁条短信计费。此外,表达里还论及,最四只好扶助350字的短信。

 

 

楼主提到的150字限制没听别人说过,英文谷歌没找到,中文谷歌(Google)只搜到0玖年时邮电通讯在测试150字符短信系统。

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

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

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

  1. 拖动控件的话编写翻译器自动加的layout_blow=”@+id/xxx” id那几个部分未有+号
    Ctrl+f批量替换
    艾德itText呈现的行数android:singleLine=”true”1行, android:lines=”五”
    多行
    模拟器超时原因 计算机配置低,修改超时时间,模拟器socket挂了,重启一下
    短信api SmsManager倘若过时,导包的标题gsm
    二G一代的,固然3个类不恐怕new对象,那么它必然存在三个getDefaut大概getInstance的静态方法

  2. SmsManager的方法
    sendDataMessage(发送彩信)
    sendMultipartTextMessage(发送多条新闻),
    sendTextMessage(目的手提式有线电话机, null(来源手提式有线电话机不帮助), text, sentIntent,
    deliveryIntent)后八个参数,延迟告诉和送达报告,不关切填null
    亟待那个权力 android.permission.SEND_SMS

  1. 拖动控件的话编写翻译器自动加的layout_blow=”@+id/xxx” id那个部分从没+号
    Ctrl+f批量替换
    EditText展现的行数android:singleLine=”true”壹行, android:lines=”伍”
    多行
    模拟器超时原因 计算机配置低,修改超时时间,模拟器socket挂了,重启一下
    短信api SmsManager假使过时,导包的难题gsm
    二G时代的,如若3个类不恐怕new对象,那么它自然存在2个getDefaut恐怕getInstance的静态方法

  2. SmsManager的方法
    sendDataMessage(发送彩信)
    sendMultipartTextMessage(发送多条音讯),
    sendTextMessage(目的手机, null(来源手提式有线电话机不扶助), text, sentIntent,
    deliveryIntent)后四个参数,延迟告诉和送达报告,不敬服填null
    内需以此权力 android.permission.SEND_SMS

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

短信都要最大尺寸的界定的,android提供了四个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地图