威尼斯人开户

短信发送器,手提式无线电电话机短信为啥要界定七十多个汉字

28 4月 , 2019  

原标题:手提式有线电话机短信为啥要限制七二十一个汉字?酷派发短信有字数限制吗?

本人不想写一篇大而全的篇章,也无力去索求那么多材料涵盖全数知识点,如若想掌握越多新闻,那里有几篇作者觉着写得精确的篇章能够提供参考,本文也有的借鉴了中间的始末。

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

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

用过功能机的同伴们都会驾驭,每一条短信的字数被界定在7十三个汉字,超越之后就会被拆分为二条短信发送。

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

威尼斯人开户,知乎:什么是 7 位元的字符? 英文字符难道不是 8 bit
短信发送器,手提式无线电电话机短信为啥要界定七十多个汉字。是叁个字符?一条短信到底能容下 140 个英文字符如故 160 个?

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

为啥要限制在陆十五个汉字?多设置一点不佳呢?

基本功概念

  • 字符
    字符是各个文字和标志的总称,包含各国家文字、标点符号、图形符号、数字等,乃至还足以归纳不只怕呈现的字符(比方ASCII规范定义了1三十多个字符,在那之中三十7个字符不只怕出示)。
  • 字符集
    为了使Computer能够管理字符音信,首先要调控选取哪些字符。那样就形成了贰个集结,大概说一个表,称为字符表(character
    repertoire)。当然,也得以以为那正是2个字符集(character set)。
    譬如说,将有着的英文字母放在一齐能够组合3个字符集,将兼具的方块字放在一块儿得以构成叁个字符集,等等。
  • 编码字符集
    对多个字符集中的持有字符进行编号,那种编号后的字符集叫做编码字符集(这里的编码仅仅指编号,不一样于下文中的编码)。常见的编码字符集有ASCII、Unicode、GBK等。

可以那样来掌握:字符串是由字符构成,字符在Computer硬件中经过二进制情势积存,那种贰进制形式正是编码。倘若直接使用
“字符串️字符️贰进制表示(编码)”
,会大增差别门类编码之间转移的纷纷。所以引进了3个抽象层,“字符串️字符️与储存非亲非故的意味️2进制表示(编码)”
,这样就能够用一种与仓库储存非亲非故的样式表示字符,区别的编码之间转变时可以先转移到这几个抽象层,然后再调换为任何编码情势。
举例:Unicode 就是 “与存款和储蓄毫无干系的代表”,UTF-8 正是 “二进制表示”。

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

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

其实,是有历史由来的。

ASCII字符集

一般性说的ASCII字符集不包罗扩张集,只有1二十六个字符,因而其编码的积存只需求选用七个bit,三个字节丰富了参天位永久都以0。例如字符’0’,其代码是十6进制的0x30,二进制表示为001一千0。

此处说个和ASCII字符集有关的编码方案,GSM规范协议规定单条短信最多囤积13柒个字节的剧情,如若短信内容只含有ASCII字符,因为ASCII字符的数目第陆人必定是0,所以GSM规范中规定了7bit编码的短信格式,只用九个bit来三番五次存储ASCII字符,那样原本1三17个八bit的仓库储存空间,就能够积攒1伍十五个7bit的多寡。要是何人现在手上还有NOKIA手提式有线电话机,能够拿起来看看只包蕴ASCII字符的短信是或不是足以输入15九个字符,假诺短信中蕴藏了非ASCII字符(比方中文),那么全数字符都会变成双字节囤积的编码(UCS-贰编码),一条短信的始末就死灰复燃成只可以发送七12个字符。现近来的智能手提式有线电话机大多都援救短信拼接,并不是说单条短信的体积扩张了,而是将你编写的当先单条短信体量的短信分成多条发送,运营商也是按多条短信计的。

一则短信能够容纳140字节,也便是约156个五人元的字符、或是1三十九个八-bit的字符,汉语字、希伯来语字与日文字那些占二-byte的字符则可容纳七10多个。(使用Unicode系统)。那一个不包涵额外的系统情报。

一则短信能够容纳140字节,也正是约1陆二十个5位元的字符、或是13七个8-bit的字符,中文字、马耳他语字与日文字这一个占二-byte的字符则可容纳6二十个。(使用Unicode系统)。那么些不蕴含额外的体系情报。

案由要追溯到上世纪80年份,Friedhelm
希尔ebrand是以后手提式有线电话机短信手艺的主发明人,6十四个汉字(157个英文字符)正是她挑起的。

GB类别字符集

华语景况下借使要健康显示字符,仅依靠ASCII字符集是可怜的,因而大家国家制定了1密密麻麻的国家标准(GB),当中就总结GB231二、GB1贰仟、GBK、GB18030……,最新的正统是GB18030,包括702四十五个字符。

还有本身的手机怎么是最多 150 个英文字母?那是 七.5 位元的编码格局吗?

还有本身的无绳电话机怎么是最多 150 个英文字母?那是 七.五 位元的编码格局吗?

威尼斯人开户 1

Unicode字符集

Unicode字符集由多语言软件缔造商组成的联合码结盟(Unicode
Consortium)与国际标准化组织的ISO-1064陆职业组制订,为种种语言中的每一种字符内定统一且唯一的代码点,以满足跨语言、跨平台转变和管理公事的供给。中、日、韩的三种文字占用了Unicode中0x两千到0x9FFF的有些Unicode近期普及运用的是UCS-2编码,它用多个字节来编码贰个字符,
比方汉字”壹”的编码是0x四E00。事实上Unicode对汉字帮助不怎么好,那也是不可能的,简体和错综复杂总共有陆陆万个汉字,而UCS-二最多能表示655三十多个,所以Unicode只可以排除部分差不离不用的方块字,幸好GB231贰字符集中常用的简体汉字也然则67六3个,为了能代表全体汉字,Unicode也有UCS-肆标准,正是用
五个字节来编码字符。

Unicode代码点范围为0x00x10FFFF,共计1114112个代码点,划分为编号01陆的壹8个字符平面,每种平面包涵65五四1九个代码点。在那之中编号为0的平面最为常用,称为基本多语种平面(Basic
Multilingual Plane, BMP);别的平面则称之为接济语言平面。

为了描述一个代码点,能够选拔U加十六进制整数的方法。比方,U+004一代表英文大写字母A,U+四E00表示汉字”壹”。

 

 

他立马选用一台打字机随便打出壹部分由字母组成的新闻,令人奇怪的是,这一个音信每一条都以只有壹两行,而且总字数也不会超过1陆十三个,160便成为他认为颇具奇妙的数字。

编码

至于编码格局,当然能够接纳类似ASCII字符集的编码格局——代码点等值转变法(那是自个儿要好起的名字)。既然Unicode代码点的值的限制是0~0x10FFF,那么能够用一个二1bit的编码单元来编码,直接把代码点等值转变到21bit的贰进制连串。

只是那存在三个空中应用的主题材料,举个例子对于利用塞尔维亚(Република Србија)语的人来说,ASCII基本得以满足使用。假使利用ASCII码,只要求一个字节来积存字符,不过若选择刚才的思路,需求接近二个字节来囤积,这明显是荒废空间的。

比如急需协理的字符集再少一些,仅帮助理编辑号0的平面,那至少也有655三18个字符,必要16bit的空中(二字节)来积存二个字符,即UCS-二编码,那种编码用来囤积ASCII字符也是1种浪费。

Unicode在不短1段时间内不恐怕推广,直到网络的现身,为不留余地Unicode如何在互联网上传输的标题,于是面向传输的众多
UTF(UCS Transfer
Format)标准出现了,顾名思义,UTF-八正是每一回几个位传输数据,而UTF-1陆正是每一趟十五个位。UTF-八正是在互连网络选择最广的壹种Unicode的贯彻格局,这是为传输而陈设的编码,并使编码无国界,那样就能够呈现举世上享有知识的字符了。

yskin:

yskin:

Friedhelm
希尔ebrand四十六周岁的时候,他感觉近期手提式有线电话机短信1五14个字符已经足足使用,于是决定把那一个数字定为一条短信内容的字数上线。

UTF-8

UTF-八最大的一个特色,就是它是一种变长的编码格局。它能够行使1~多少个字节表示几个标识,依据不一样的暗记而变化字节长度,当字符在ASCII
码的限量时,就用四个字节表示,保留了ASCII字符贰个字节的编码做为它的一有的,注意的是Unicode2个国语字符占三个字节,而UTF-捌3个普通话字符占三个字节)。从Unicode到UTF-8并不是一向的对应,而是要过局部算法和规则来调换。

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的二进制表示为0十0111000000000,转变来UTF-捌便是11拾0十0 10111000一千0000,对应的十陆进制表示是0xE肆 0xB捌 0x80。

七位元字符正是指规范ASCII去掉最高位的0。以那种措施实行编码,在U.S.这么的国家,发送的短信字符都以ASCII码表里的,所以没供给浪费贰个字位。

7位元字符就是目标准ASCII去掉最高位的0。以那种形式开始展览编码,在美利坚合营国如此的国度,发送的短信字符都以ASCII码表里的,所以没供给浪费3个字位。

随着短信技术的迈入,各大运营商也纷纭把1五17个字符作为单条短信的上线。

UTF-16

UTF-1陆的编码单元是16bit,对于每一种代码点,选择三个只怕二个编码单元来代表,因而那是3个变长表示。

 

 

威尼斯人开户 2

UTF-32

UTF-3二选择代码点等值调换法,将各样代码点编码为2个3二bit的编码单元(肆字节),因而空间效能相当的低,不比别的Unicode编码应用遍布。

而短信协议支持7字位、8字位、1六字位3种编码,7字位用于U.S.,能够发送1五拾陆个字母,八字位用于南美洲国度,16字位用于中国和东瀛韩俄等国家,使用UCS-贰编码。而UCS-2把装有Unicode字符编码为二字节,所以固然英文字母也会编码成一个字节。

而短信协议支持七字位、八字位、1陆字位三种编码,7字位用于United States,能够发送1五1四个字母,8字位用于亚洲江山,1六字位用于中国和东瀛韩俄等国家,使用UCS-贰编码。而UCS-二把具备Unicode字符编码为二字节,所以固然英文字母也会编码成一个字节。

对编制程序技巧有所驾驭的同窗知道,由于字符自个儿使用编码格局的不如,最后将变成字符个数的不及。对于英文字母来讲,一般接纳伍人ASCII编码,汉语则为伍人UCS-2编码,供给占用叁个字节。

工具推荐

此间有个网站提供的转码效果11分好,比起一些站长工具更专门的工作。

威尼斯人开户 3

Paste_Image.png

上海教室是应用该网址寻觅汉语字符“一”的结果,能够看出其Unicode值为U+4E00,UTF-8编码为0xE4
0xB八 0x80,在U奥迪Q7L中需求转码为%E肆%B八%80,在js脚本中则是\u4e00……。

 

 

1陆十二个英文字符要用6人ASCII编码来进展表示,必要7*1陆12人。不过换来5个人UCS-二编码表示,则须求7*160/7位。同时,由于汉语汉字供给占用3个字符,那样汉语字符总的数量正是七*160/8/二,刚好等于70。

举多少个栗子

采用Windows Mobile
6系统做测试,新建短信后输入叁个英文字母,下边突显1/160,再输入一个出示2/160,那就是七字位状态,可以在140字节里装下1伍十多个字符。当再输入3个汉字的时候,下边的显示立即成为3/70,那正是1陆字位状态,每一种字符都占贰个字节,140字节只好装下陆十个字符,哪怕里面是62个英文字符加三个汉字。

运用Windows Mobile
陆系统做测试,新建短信后输入3个英文字母,上边显示1/160,再输入贰个展现2/160,那就是柒字位状态,能够在140字节里装下1六1柒个字符。当再输入贰其中夏族民共和国字的时候,上面包车型地铁展现立即成为3/70,那正是1陆字位状态,每一个字符都占三个字节,140字节只能装下七拾柒个字符,哪怕里面是七11个英文字符加二个汉字。

这正是干吗运维商规定单条短信的方块字限制为七十几个的来由。

有道翻译

用有道翻译的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达成的。

自家是咕咕鸡,一个还在不停学习的全栈工程师。
热爱生活,喜欢跑步,家庭是本身不住向前向上的重力。

设若短信超越长度,那么系统就自动分成多条短信来发。因为要加盟一些标志性字符以象征顺序,所以英文每条壹五十二个,普通话每条陆8个。接收方假设是新一点的无绳电话机就会把这几条合并后显得给用户,老一点的手提式有线电话机就会分别展现每条短信。

若果短信超越长度,那么系统就自动分成多条短信来发。因为要参预一些标记性字符以象征顺序,所以英文每条1伍二个,汉语每条陆拾伍个。接收方即使是新一点的无绳电话机就会把这几条合并后显得给用户,老一点的手提式有线电话机就会独家展现每条短信。

主要编辑:

 

 

譬如说,输入七十一个普通话,下边呈现70/70,再加1个时上面突显“71/13四(贰短音信)”。输入1伍拾七个英文,上面突显160/160,再加1个展现“1陆百分之三十三06(2短新闻)”。

譬如,输入6九当中文,下边展现70/70,再加多少个时上边展现“71/134(贰短音讯)”。输入1陆二十一个英文,上边呈现160/160,再加2个出示“1陆百分之三十三0陆(2短音讯)”。

 

 

行使13九邮箱做测试,里面发送短信无论什么字符都以以UCS-二编码,当输入一叁拾一个字符时,显示将按三条短信计费。其余,表明里还论及,最多只好帮助350字的短信。

行使13九邮箱做测试,里面发送短信无论什么字符都以以UCS-二编码,当输入一三十四个字符时,展现将按三条短信计费。其余,表达里还涉及,最八只可以补助350字的短信。

 

 

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

楼主提到的150字限制没听别人说过,英文谷歌没找到,汉语Google只搜到0九年时电信在测试150字符短信系统。

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

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

  1. 拖动控件的话编写翻译器自动加的layout_blow=”@+id/xxx” id那多少个部分没有+号
    Ctrl+f批量替换
    艾德itText呈现的行数android:singleLine=”true”1行, android:lines=”5″
    多行
    模拟器超时原因 Computer配置低,修改超时时间,模拟器socket挂了,重启一下
    短信api SmsManager假诺过时,导包的难题gsm
    2G暂时的,假诺一个类不能new对象,那么它一定期存款在1个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=”伍”
    多行
    模拟器超时原因 Computer配置低,修改超时时间,模拟器socket挂了,重启一下
    短信api SmsManager假使过时,导包的主题材料gsm
    二G一代的,就算八个类无法new对象,那么它自然存在八个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提供了多少个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地图