在Android当中常用的控件的详解和分析
16lz
2021-12-25
常用的控件 TextView的属性详解 android:autoLink :设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web /email/phone/map/all) android:autoText :如果设置,将自动执行输入值的拼写纠正。此处无效果,在显示输入法并输入的时候起作用。 android:bufferType : 指定getText()方式取得的文本类别。选项editable 类似于StringBuilder :可追加字符,也就是说getText后可调用append方法设置文本内容。spannable :则可在给定的字符区域使用样式,参见这里1、这里2。 android:capitalize :设置英文字母大写类型。此处无效果,需要弹出输入法才能看得到,参见EditView此属性说明。 android:cursorVisible:设定光标为显示/隐藏,默认显示。 android:digits:设置允许输入哪些字符。如“1234567890.+-*/% ()” android:drawableBottom:在text的下方输出一个drawable,如图片。如果指定一个颜色的话会把text的背景设为该颜色,并且同时和background使用时覆盖后者。 android:drawableLeft:在text的左边输出一个drawable,如图片。 android:drawablePadding:设置text与drawable(图片)的间隔,与drawableLeft、 drawableRight、drawableTop、drawableBottom一起使用,可设置为负数,单独使用没有效果。 android:drawableRight:在text的右边输出一个drawable。 android:drawableTop:在text的正上方输出一个drawable。 android:editable:设置是否可编辑。 android:editorExtras:设置文本的额外的输入数据。 android:ellipsize:设置当文字过长时,该控件该如何显示。有如下值设置:”start”—?省略号显示在开头;”end” ——省略号显示在结尾;”middle”—-省略号显示在中间;”marquee” ——以跑马灯的方式显示(动画横向移动) android:freezesText:设置保存文本的内容以及光标的位置。 android:gravity:设置文本位置,如设置成“center”,文本将居中显示。 android:hintText:为空时显示的文字提示信息,可通过textColorHint设置提示信息的颜色。此属性在 EditView中使用,但是这里也可以用。 android:imeOptions:附加功能,设置右下角IME动作与编辑框相关的动作,如actionDone右下角将显示一个“完成”,而不设置默认是一个回车符号。这个在EditView中再详细说明,此处无用。 android:imeActionId:设置IME动作ID。 android:imeActionLabel:设置IME动作标签。 android:includeFontPadding:设置文本是否包含顶部和底部额外空白,默认为true。 android:inputMethod:为文本指定输入法,需要完全限定名(完整的包名)。例如:com.google.android.inputmethod.pinyin,但是这里报错找不到。 android:inputType:设置文本的类型,用于帮助输入法显示合适的键盘类型。在EditView中再详细说明,这里无效果。 android:linksClickable:设置链接是否点击连接,即使设置了autoLink。 android:marqueeRepeatLimit:在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置为 marquee_forever时表示无限次。 android:ems:设置TextView的宽度为N个字符的宽度。这里测试为一个汉字字符宽度 android:maxEms:设置TextView的宽度为最长为N个字符的宽度。与ems同时使用时覆盖ems选项。 android:minEms:设置TextView的宽度为最短为N个字符的宽度。与ems同时使用时覆盖ems选项。 android:maxLength:限制显示的文本长度,超出部分不显示。 android:lines:设置文本的行数,设置两行就显示两行,即使第二行没有数据。 android:maxLines:设置文本的最大显示行数,与width或者layout_width结合使用,超出部分自动换行,超出行数将不显示。 android:minLines:设置文本的最小行数,与lines类似。 android:lineSpacingExtra:设置行间距。 android:lineSpacingMultiplier:设置行间距的倍数。如”1.2” android:numeric:如果被设置,该TextView有一个数字输入法。此处无用,设置后唯一效果是TextView有点击效果,此属性在EdtiView将详细说明。 android:password:以小点”.”显示文本 android:phoneNumber:设置为电话号码的输入方式。 android:privateImeOptions:设置输入法选项,此处无用,在EditText将进一步讨论。 android:scrollHorizontally:设置文本超出TextView的宽度的情况下,是否出现横拉条。 android:selectAllOnFocus:如果文本是可选择的,让他获取焦点而不是将光标移动为文本的开始位置或者末尾位置。 TextView中设置后无效果。 android:shadowColor:指定文本阴影的颜色,需要与shadowRadius一起使用。 android:shadowDx:设置阴影横向坐标开始位置。 android:shadowDy:设置阴影纵向坐标开始位置。 android:shadowRadius:设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。 android:singleLine:设置单行显示。如果和layout_width一起使用,当文本不能全部显示时,后面用“…”来表示。如android:text="test_ singleLine " android:singleLine="true" android:layout_width="20dp"将只显示“t…”。如果不设置singleLine或者设置为false,文本将自动换行 android:text:设置显示文本. android:textAppearance:设置文字外观。如 “?android:attr/textAppearanceLargeInverse”这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。可设置的值如下:textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/textAppearanceMedium/textAppearanceMediumInverse/textAppearanceSmall/textAppearanceSmallInverse android:textColor:设置文本颜色 android:textColorHighlight:被选中文字的底色,默认为蓝色 android:textColorHint:设置提示信息文字的颜色,默认为灰色。与hint一起使用。 android:textColorLink:文字链接的颜色. android:textScaleX:设置文字之间间隔,默认为1.0f。 android:textSize:设置文字大小,推荐度量单位”sp”,如”15sp” android:textStyle:设置字形[bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2] 可以设置一个或多个,用“|”隔开 android:typeface:设置文本字体,必须是以下常量值之一:normal 0, sans 1, serif 2, monospace(等宽字体) 3] android:height:设置文本区域的高度,支持度量单位:px(像素)/dp/sp/in/mm(毫米) android:maxHeight:设置文本区域的最大高度 android:minHeight:设置文本区域的最小高度 android:width:设置文本区域的宽度,支持度量单位:px(像素)/dp/sp/in/mm(毫米),与layout_width 的区别看这里。 android:maxWidth:设置文本区域的最大宽度 android:minWidth:设置文本区域的最小宽度
EditText属性 EditText继承TextView,所以EditText具有TextView的属性特点,下面主要介绍一些EditText的特有的输入法的属性特点 android:layout_gravity="center_vertical":设置控件显示的位置:默认top,这里居中显示,还有bottom android:hin:Text为空时显示的文字提示信息,可通过textColorHint设置提示信息的颜色。 android:singleLine:设置单行输入,一旦设置为true,则文字不会自动换行。 android:gray="top" :多行中指针在第一行第一位置et.setSelection(et.length());:调整光标到最后一行 android:autoText :自动拼写帮助。这里单独设置是没有效果的,可能需要其他输入法辅助才行 android:capitalize :设置英文字母大写类型。设置如下值:sentences仅第一个字母大写;words每一个单词首字母大小,用空格区分单词;characters每一个英文字母都大写。 android:digits :设置允许输入哪些字符。如“1234567890.+-*/%\n()” android:singleLine :是否单行或者多行,回车是离开文本框还是文本框增加新行android:numeric :如果被设置,该TextView接收数字输入。有如下值设置:integer正整数、signed带符号整数、decimal带小数点浮点数。 android:inputType:设置文本的类型 android:password :密码,以小点”.”显示文本 android:phoneNumber :设置为电话号码的输入方式。 android:editable :设置是否可编辑。仍然可以获取光标,但是无法输入。 android:autoLink=”all” :设置文本超链接样式当点击网址时,跳向该网址 android:textColor = "#ff8c00":字体颜色 android:textStyle="bold":字体,bold, italic, bolditalic android:textAlign="center":EditText没有这个属性,但TextView有 android:textColorHighlight="#cccccc":被选中文字的底色,默认为蓝色 android:textColorHint="#ffff00":设置提示信息文字的颜色,默认为灰色 android:textScaleX="1.5":控制字与字之间的间距 android:typeface="monospace":字型,normal, sans, serif, monospace android:background="@null":空间背景,这里没有,指透明 android:layout_weight="1":权重在控制控件显示的大小时蛮有用的。 android:textAppearance="?android:attr/textAppearanceLargeInverse":文字外观,这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。 ImageView,ImageButton以及Button 答:ImageView和ImageButton都是继承于View类,Button是继承于TextView类。所以 ImageButton 不支持setText(),而Button支持 ImageButton 支持setImageURI,而Button不支持 ImageButton和Button 都有Button的状态而ImageView没有。 ImageView所继承的是View ,ImageButton所继承的是ImageView ,Button继承是的TextView 而TextView 和ImageView都继承于View 也就是说ImgeView ,ImageButton和Button都可以注册监听甚至TextView也可以
Android基础控件 - ProgressBar、SeekBar和RatingBar 一. 继承关系 (1) ProgressBar继承View (2) AbsSeekBar继承ProgressBar (3) SeekBar和RatingBar继承ProgressBar 二. ProgressBar 常用属性: max、progress、progressDrawable indeterminate:设置为true时表示进度条不精确显示进度 indeterminateDrawable:表示进度条不精确显示进度时的drawable indeterminateDuration:表示进度条不精确显示进度时的持续时间 secondaryProgress:二级进度条,可用于在线视频播放时,一条表示播放进度,一条表示缓冲 三. SeekBar (1) 常用属性: max、progress、secondaryProgress、thumb(滑块的drawable) (2) seekbar的三个相关事件 onProgressChanged() onStartTrackingTouch():按住seekbar时 onStopTrackingTouch():松开seekbar时 四. RatingBar (1) 常用属性: isIndicator:是否用作指示,为true时,用户无法更改,默认为false numStars: 星星个数,整数 rating:默认评分,浮点 stepSize:每次评分加的值,浮点 (2) 使用 定制 WebView的详解 1.打开网页时不调用系统浏览器, 而是在本WebView中显示: mWebView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } });
2.通过java代码调用javascript
WebSettings webSettings = mWebView .getSettings(); webSettings.setJavaScriptEnabled(true); mWebView.addJavascriptInterface(new Object() { public void clickOnAndroid() { mHandler.post(new Runnable() { public void run() { webview.loadUrl("javascript:wave()"); } }); } }, "demo"); 3. 按返回键时, 不退出程序而是返回上一浏览页面: public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { mWebView.goBack(); return true; } return super.onKeyDown(keyCode, event); }
4.打开页面时, 自适应屏幕: WebSettings webSettings = mWebView .getSettings(); webSettings.setUseWideViewPort( true);//设置此属性,可任意比例缩放webSettings.setLoadWithOverviewMode( true); 5.便页面支持缩放: WebSettings webSettings = mWebView .getSettings(); webSettings.setJavaScriptEnabled( true); webSettings.setBuiltInZoomControls( true);webSettings.setSupportZoom( true); 6..如果webView中需要用户手动输入用户名、密码或其他,则webview必须设置支持获取手势焦点。 webview.requestFocusFromTouch(); 7.WebView 加载界面主要调用三个方法:LoadUrl、LoadData、LoadDataWithBaseURL. (1)、LoadUrl 直接加载网页、图片并显示.(本地或是网络上的网页、图片、gif) (2)、LoadData 显示文字与图片内容 (模拟器1.5、1.6) (3)、LoadDataWithBase 显示文字与图片内容(支持多个模拟器版本) 8.WebSettings 的常用方法介绍 setJavaScriptEnabled(true); //支持js
setPluginsEnabled(true); //支持插件
setUseWideViewPort(false); //将图片调整到适合webview的大小
setSupportZoom(true); //支持缩放
setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); //支持内容重新布局
supportMultipleWindows(); //多窗口
setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //关闭webview中缓存
setAllowFileAccess(true); //设置可以访问文件
setNeedInitialFocus(true); //当webview调用requestFocus时为webview设置节点
webview webSettings.setBuiltInZoomControls(true); //设置支持缩放
setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口
setLoadWithOverviewMode(true); // 缩放至屏幕的大小
setLoadsImagesAutomatically(true); //支持自动加载图片 9.WebViewClient 的方法全解 doUpdateVisitedHistory(WebView view, String url, boolean isReload) //(更新历史记录)
onFormResubmission(WebView view, Message dontResend, Message resend) //(应用程序重新请求网页数据)
onLoadResource(WebView view, String url) // 在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次。
onPageStarted(WebView view, String url, Bitmap favicon) //这个事件就是开始载入页面调用的,通常我们可以在这设定一个loading的页面,告诉用户程序在等待网络响应。
onPageFinished(WebView view, String url) //在页面加载结束时调用。同样道理,我们知道一个页面载入完成,于是我们可以关闭loading 条,切换程序动作。
onReceivedError(WebView view, int errorCode, String description, String failingUrl)// (报告错误信息)
onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host,String realm)//(获取返回信息授权请求) onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) //重写此方法可以让webview处理https请求。 onScaleChanged(WebView view, float oldScale, float newScale) // (WebView发生改变时调用)
onUnhandledKeyEvent(WebView view, KeyEvent event) //(Key事件未被加载时调用)
shouldOverrideKeyEvent(WebView view, KeyEvent event)//重写此方法才能够处理在浏览器中的按键事件。
shouldOverrideUrlLoading(WebView view, String url) //在点击请求的是链接是才会调用,重写此方法返回true表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边。这个函数我们可以做很多操作,比如我们读取到某些特殊的URL,于是就可以不打开地址,取消这个操作,进行预先定义的其他操作,这对一个程序是非常必要的。 ListView 和GridView的联系和区别 1. ListView 和 GridView 控件均用于显示应用中数据的集合。它们的功能十分相似,但是显示数据的方式不同。它们都派生自 ItemsControl 类。 ListView 采用垂直堆叠的方式显示数据。该控件常用于显示按顺序排列的项目列表,如电子邮件列表或搜索结果列表。它在主从式列表情况下也很有用,其中的列表项仅包含少量信息,并且选定项目的详细信息会单独显示 2. 将项添加到项集合 可以通过使用可扩展应用程序标记语言 (XAML) 或代码向 Items 集合添加项。在以下情况下通常采用这种方式添加项:具有不更改且使用 XAML 轻松定义的少量项,或者在运行时采用代码生成项。以下是带有使用 XAML 内联定义项的 ListView 和带有使用代码添加项的 GridView。 Item 1 Item 2
/ Create a new grid view, add content, // and add a SelectionChanged event handler.GridView gridView1 = new GridView();gridView1.Items.Add("Item 1");gridView1.Items.Add("Item 2");gridView1.SelectionChanged += GridView_SelectionChanged;// Add the grid view to a parent container in the visual tree.stackPanel1.Children.Add(gridView1); 3. 设置项目源 如果 ItemsSource 属性已设置且使用 XAML 添加项,则会忽略该项。如果 ItemsSource 属性已设置且使用代码向 Items 集合中添加项,则会引发异常 以下是一些支持绑定到 ItemsControl 的常见集合类型。 4. 指定项目的外观 通过将 DisplayMemberPath 设置到特定的属性,设置itemTemplate 5. 指定视图布局 若要指定如何在列表或网格视图中摆放项,则可以设置 ItemsPanel 属性来指定设置为布局 Panel 的 ItemsPanelTemplate。默认情况下, GridView 使用一个 WrapGrid 面板作为它的 ItemsPanel, ListView 使用一个 VirtualizingStackPanel 作为它的 ItemsPanel。 下面介绍如何在 ListView 中使用 WrapGrid 更改项目的布局。 WrapGrid 替换默认的 VirtualizingStackPanel,它将项目排成一列。我们设置 WrapGrid.MaximumRowsOrColumns 属性,以便将项目排成两列 6. 向视图中添加标题 你可以向 ListView 或 GridView 中添加标题,方法是为 Header 属性分配一个字符串或对象。可以通过设置 HeaderTemplate 属性使用数据模板 定义 Header 的布局。 默认情况下,标题显示在视图的前沿。它显示在 ListView 的顶部, GridView 的左侧。如果 FlowDirection 属性设置为 RightToLeft,则标题显示在 GridView 的右侧。 下面是标题包含 StackPanel(具有文本和图像)的 GridView。此可扩展应用程序标记语言 (XAML) 是 Microsoft Visual Studio“网格应用”模板的 GroupDetail 页面中使用的 GridView 的简化版本。 XAML 复制 GridView 的标题是轮廓为黄色的部分。 ScrollView和HorizontalScrollView的使用 1.ScrollView就是一个可以滚动的View,这个滚动的方向是垂直方向的; HorizontalScrollView则是一个水平方向的可以滚动的View;
2.ScrollView和HorizontalScrollView都是一个布局容器,里面可以放入child View控件,我们通过其继承关系看到,ScrollView和HorizontalScrollView这两个类是ViewGroup的一个间接子类。
3.通过使用ScrollView,我们可以滚动其里面的子View控件,这样就允许我们控件的高度可以大于我们实际屏幕的尺寸高度。ScrollView是一个FrameLayout FrameLayout通常被用来设计成在屏幕上占用一块地方并且里面只有一个Item, 对于ScrollView来说,因为其是垂直方向上的滚动布局,因此通常我们给其添加一个LinearLayout的子元素,并且设置orientation为vertical(垂直方向的)。 RadioButton和CheckBox
1、单个RadioButton在选中后,通过点击无法变为未选中 单个CheckBox在选中后,通过点击可以变为未选中 2、一组RadioButton,只能同时选中一个 一组CheckBox,能同时选中多个 3、RadioButton在大部分UI框架中默认都以圆形表示 CheckBox在大部分UI框架中默认都以矩形表示 RadioButton和RadioGroup的关系: 1、RadioButton表示单个圆形单选框,而RadioGroup是可以容纳多个RadioButton的容器 2、每个RadioGroup中的RadioButton同时只能有一个被选中 3、不同的RadioGroup中的RadioButton互不相干,即如果组A中有一个选中了,组B中依然可以有一个被选中 4、大部分场合下,一个RadioGroup中至少有2个RadioButton 5、大部分场合下,一个RadioGroup中的RadioButton默认会有一个被选中,并建议您将它放在RadioGroup中的起始位置 RadioGroup和RadioButton RadioButton和CheckBox的区别: 1、单个RadioButton在选中后,通过点击无法变为未选中 单个CheckBox在选中后,通过点击可以变为未选中 2、一组RadioButton,只能同时选中一个 一组CheckBox,能同时选中多个 3、RadioButton在大部分UI框架中默认都以圆形表示 CheckBox在大部分UI框架中默认都以矩形表示 RadioButton和RadioGroup的关系: 1、RadioButton表示单个圆形单选框,而RadioGroup是可以容纳多个RadioButton的容器 2、每个RadioGroup中的RadioButton同时只能有一个被选中 3、不同的RadioGroup中的RadioButton互不相干,即如果组A中有一个选中了,组B中依然可以有一个被选中 4、大部分场合下,一个RadioGroup中至少有2个RadioButton 5、大部分场合下,一个RadioGroup中的RadioButton默认会有一个被选中,并建议您将它放在RadioGroup中的起始位置 Android布局优化之include标签详解 一、include标签(布局重用) 1、 说明:该标签的目的是 解决重复定义布局的问题而诞生的, 提高代码的复用 2、 使用方法: 4、注意事项: 子控件抛出空指针的情况 include标签若指定了ID属性,而你的layout也定义了ID,则你的layout的ID会被覆盖。如果findViewById()查找layout的Id来查找子控件,会出现这种情况。 解决:不用上边的方法。可以直接查找子控件的id。或者查找include标签的id来查找子控件 常用的布局: Android中常用的5大布局方式有以下几种:
EditText属性 EditText继承TextView,所以EditText具有TextView的属性特点,下面主要介绍一些EditText的特有的输入法的属性特点 android:layout_gravity="center_vertical":设置控件显示的位置:默认top,这里居中显示,还有bottom android:hin:Text为空时显示的文字提示信息,可通过textColorHint设置提示信息的颜色。 android:singleLine:设置单行输入,一旦设置为true,则文字不会自动换行。 android:gray="top" :多行中指针在第一行第一位置et.setSelection(et.length());:调整光标到最后一行 android:autoText :自动拼写帮助。这里单独设置是没有效果的,可能需要其他输入法辅助才行 android:capitalize :设置英文字母大写类型。设置如下值:sentences仅第一个字母大写;words每一个单词首字母大小,用空格区分单词;characters每一个英文字母都大写。 android:digits :设置允许输入哪些字符。如“1234567890.+-*/%\n()” android:singleLine :是否单行或者多行,回车是离开文本框还是文本框增加新行android:numeric :如果被设置,该TextView接收数字输入。有如下值设置:integer正整数、signed带符号整数、decimal带小数点浮点数。 android:inputType:设置文本的类型 android:password :密码,以小点”.”显示文本 android:phoneNumber :设置为电话号码的输入方式。 android:editable :设置是否可编辑。仍然可以获取光标,但是无法输入。 android:autoLink=”all” :设置文本超链接样式当点击网址时,跳向该网址 android:textColor = "#ff8c00":字体颜色 android:textStyle="bold":字体,bold, italic, bolditalic android:textAlign="center":EditText没有这个属性,但TextView有 android:textColorHighlight="#cccccc":被选中文字的底色,默认为蓝色 android:textColorHint="#ffff00":设置提示信息文字的颜色,默认为灰色 android:textScaleX="1.5":控制字与字之间的间距 android:typeface="monospace":字型,normal, sans, serif, monospace android:background="@null":空间背景,这里没有,指透明 android:layout_weight="1":权重在控制控件显示的大小时蛮有用的。 android:textAppearance="?android:attr/textAppearanceLargeInverse":文字外观,这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。 ImageView,ImageButton以及Button 答:ImageView和ImageButton都是继承于View类,Button是继承于TextView类。所以 ImageButton 不支持setText(),而Button支持 ImageButton 支持setImageURI,而Button不支持 ImageButton和Button 都有Button的状态而ImageView没有。 ImageView所继承的是View ,ImageButton所继承的是ImageView ,Button继承是的TextView 而TextView 和ImageView都继承于View 也就是说ImgeView ,ImageButton和Button都可以注册监听甚至TextView也可以
Android基础控件 - ProgressBar、SeekBar和RatingBar 一. 继承关系 (1) ProgressBar继承View (2) AbsSeekBar继承ProgressBar (3) SeekBar和RatingBar继承ProgressBar 二. ProgressBar 常用属性: max、progress、progressDrawable indeterminate:设置为true时表示进度条不精确显示进度 indeterminateDrawable:表示进度条不精确显示进度时的drawable indeterminateDuration:表示进度条不精确显示进度时的持续时间 secondaryProgress:二级进度条,可用于在线视频播放时,一条表示播放进度,一条表示缓冲 三. SeekBar (1) 常用属性: max、progress、secondaryProgress、thumb(滑块的drawable) (2) seekbar的三个相关事件 onProgressChanged() onStartTrackingTouch():按住seekbar时 onStopTrackingTouch():松开seekbar时 四. RatingBar (1) 常用属性: isIndicator:是否用作指示,为true时,用户无法更改,默认为false numStars: 星星个数,整数 rating:默认评分,浮点 stepSize:每次评分加的值,浮点 (2) 使用
2.通过java代码调用javascript
WebSettings webSettings = mWebView .getSettings(); webSettings.setJavaScriptEnabled(true); mWebView.addJavascriptInterface(new Object() { public void clickOnAndroid() { mHandler.post(new Runnable() { public void run() { webview.loadUrl("javascript:wave()"); } }); } }, "demo"); 3. 按返回键时, 不退出程序而是返回上一浏览页面: public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { mWebView.goBack(); return true; } return super.onKeyDown(keyCode, event); }
4.打开页面时, 自适应屏幕: WebSettings webSettings = mWebView .getSettings(); webSettings.setUseWideViewPort( true);//设置此属性,可任意比例缩放webSettings.setLoadWithOverviewMode( true); 5.便页面支持缩放: WebSettings webSettings = mWebView .getSettings(); webSettings.setJavaScriptEnabled( true); webSettings.setBuiltInZoomControls( true);webSettings.setSupportZoom( true); 6..如果webView中需要用户手动输入用户名、密码或其他,则webview必须设置支持获取手势焦点。 webview.requestFocusFromTouch(); 7.WebView 加载界面主要调用三个方法:LoadUrl、LoadData、LoadDataWithBaseURL. (1)、LoadUrl 直接加载网页、图片并显示.(本地或是网络上的网页、图片、gif) (2)、LoadData 显示文字与图片内容 (模拟器1.5、1.6) (3)、LoadDataWithBase 显示文字与图片内容(支持多个模拟器版本) 8.WebSettings 的常用方法介绍 setJavaScriptEnabled(true); //支持js
setPluginsEnabled(true); //支持插件
setUseWideViewPort(false); //将图片调整到适合webview的大小
setSupportZoom(true); //支持缩放
setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); //支持内容重新布局
supportMultipleWindows(); //多窗口
setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //关闭webview中缓存
setAllowFileAccess(true); //设置可以访问文件
setNeedInitialFocus(true); //当webview调用requestFocus时为webview设置节点
webview webSettings.setBuiltInZoomControls(true); //设置支持缩放
setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口
setLoadWithOverviewMode(true); // 缩放至屏幕的大小
setLoadsImagesAutomatically(true); //支持自动加载图片 9.WebViewClient 的方法全解 doUpdateVisitedHistory(WebView view, String url, boolean isReload) //(更新历史记录)
onFormResubmission(WebView view, Message dontResend, Message resend) //(应用程序重新请求网页数据)
onLoadResource(WebView view, String url) // 在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次。
onPageStarted(WebView view, String url, Bitmap favicon) //这个事件就是开始载入页面调用的,通常我们可以在这设定一个loading的页面,告诉用户程序在等待网络响应。
onPageFinished(WebView view, String url) //在页面加载结束时调用。同样道理,我们知道一个页面载入完成,于是我们可以关闭loading 条,切换程序动作。
onReceivedError(WebView view, int errorCode, String description, String failingUrl)// (报告错误信息)
onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host,String realm)//(获取返回信息授权请求) onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) //重写此方法可以让webview处理https请求。 onScaleChanged(WebView view, float oldScale, float newScale) // (WebView发生改变时调用)
onUnhandledKeyEvent(WebView view, KeyEvent event) //(Key事件未被加载时调用)
shouldOverrideKeyEvent(WebView view, KeyEvent event)//重写此方法才能够处理在浏览器中的按键事件。
shouldOverrideUrlLoading(WebView view, String url) //在点击请求的是链接是才会调用,重写此方法返回true表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边。这个函数我们可以做很多操作,比如我们读取到某些特殊的URL,于是就可以不打开地址,取消这个操作,进行预先定义的其他操作,这对一个程序是非常必要的。 ListView 和GridView的联系和区别 1. ListView 和 GridView 控件均用于显示应用中数据的集合。它们的功能十分相似,但是显示数据的方式不同。它们都派生自 ItemsControl 类。 ListView 采用垂直堆叠的方式显示数据。该控件常用于显示按顺序排列的项目列表,如电子邮件列表或搜索结果列表。它在主从式列表情况下也很有用,其中的列表项仅包含少量信息,并且选定项目的详细信息会单独显示 2. 将项添加到项集合 可以通过使用可扩展应用程序标记语言 (XAML) 或代码向 Items 集合添加项。在以下情况下通常采用这种方式添加项:具有不更改且使用 XAML 轻松定义的少量项,或者在运行时采用代码生成项。以下是带有使用 XAML 内联定义项的 ListView 和带有使用代码添加项的 GridView。
/ Create a new grid view, add content, // and add a SelectionChanged event handler.GridView gridView1 = new GridView();gridView1.Items.Add("Item 1");gridView1.Items.Add("Item 2");gridView1.SelectionChanged += GridView_SelectionChanged;// Add the grid view to a parent container in the visual tree.stackPanel1.Children.Add(gridView1); 3. 设置项目源 如果 ItemsSource 属性已设置且使用 XAML 添加项,则会忽略该项。如果 ItemsSource 属性已设置且使用代码向 Items 集合中添加项,则会引发异常 以下是一些支持绑定到 ItemsControl 的常见集合类型。 4. 指定项目的外观 通过将 DisplayMemberPath 设置到特定的属性,设置itemTemplate 5. 指定视图布局 若要指定如何在列表或网格视图中摆放项,则可以设置 ItemsPanel 属性来指定设置为布局 Panel 的 ItemsPanelTemplate。默认情况下, GridView 使用一个 WrapGrid 面板作为它的 ItemsPanel, ListView 使用一个 VirtualizingStackPanel 作为它的 ItemsPanel。 下面介绍如何在 ListView 中使用 WrapGrid 更改项目的布局。 WrapGrid 替换默认的 VirtualizingStackPanel,它将项目排成一列。我们设置 WrapGrid.MaximumRowsOrColumns 属性,以便将项目排成两列 6. 向视图中添加标题 你可以向 ListView 或 GridView 中添加标题,方法是为 Header 属性分配一个字符串或对象。可以通过设置 HeaderTemplate 属性使用数据模板 定义 Header 的布局。 默认情况下,标题显示在视图的前沿。它显示在 ListView 的顶部, GridView 的左侧。如果 FlowDirection 属性设置为 RightToLeft,则标题显示在 GridView 的右侧。 下面是标题包含 StackPanel(具有文本和图像)的 GridView。此可扩展应用程序标记语言 (XAML) 是 Microsoft Visual Studio“网格应用”模板的 GroupDetail 页面中使用的 GridView 的简化版本。 XAML 复制
2.ScrollView和HorizontalScrollView都是一个布局容器,里面可以放入child View控件,我们通过其继承关系看到,ScrollView和HorizontalScrollView这两个类是ViewGroup的一个间接子类。
3.通过使用ScrollView,我们可以滚动其里面的子View控件,这样就允许我们控件的高度可以大于我们实际屏幕的尺寸高度。ScrollView是一个FrameLayout FrameLayout通常被用来设计成在屏幕上占用一块地方并且里面只有一个Item, 对于ScrollView来说,因为其是垂直方向上的滚动布局,因此通常我们给其添加一个LinearLayout的子元素,并且设置orientation为vertical(垂直方向的)。 RadioButton和CheckBox
1、单个RadioButton在选中后,通过点击无法变为未选中 单个CheckBox在选中后,通过点击可以变为未选中 2、一组RadioButton,只能同时选中一个 一组CheckBox,能同时选中多个 3、RadioButton在大部分UI框架中默认都以圆形表示 CheckBox在大部分UI框架中默认都以矩形表示 RadioButton和RadioGroup的关系: 1、RadioButton表示单个圆形单选框,而RadioGroup是可以容纳多个RadioButton的容器 2、每个RadioGroup中的RadioButton同时只能有一个被选中 3、不同的RadioGroup中的RadioButton互不相干,即如果组A中有一个选中了,组B中依然可以有一个被选中 4、大部分场合下,一个RadioGroup中至少有2个RadioButton 5、大部分场合下,一个RadioGroup中的RadioButton默认会有一个被选中,并建议您将它放在RadioGroup中的起始位置 RadioGroup和RadioButton RadioButton和CheckBox的区别: 1、单个RadioButton在选中后,通过点击无法变为未选中 单个CheckBox在选中后,通过点击可以变为未选中 2、一组RadioButton,只能同时选中一个 一组CheckBox,能同时选中多个 3、RadioButton在大部分UI框架中默认都以圆形表示 CheckBox在大部分UI框架中默认都以矩形表示 RadioButton和RadioGroup的关系: 1、RadioButton表示单个圆形单选框,而RadioGroup是可以容纳多个RadioButton的容器 2、每个RadioGroup中的RadioButton同时只能有一个被选中 3、不同的RadioGroup中的RadioButton互不相干,即如果组A中有一个选中了,组B中依然可以有一个被选中 4、大部分场合下,一个RadioGroup中至少有2个RadioButton 5、大部分场合下,一个RadioGroup中的RadioButton默认会有一个被选中,并建议您将它放在RadioGroup中的起始位置 Android布局优化之include标签详解 一、include标签(布局重用) 1、 说明:该标签的目的是 解决重复定义布局的问题而诞生的, 提高代码的复用 2、 使用方法:
- 线性布局(LinearLayout):按照垂直或者水平方向布局的组件。
- 帧布局(FrameLayout):组件从屏幕左上方布局组件。
- 表格布局(TableLayout):按照行列方式布局组件。
- 相对布局(RelativeLayout):相对其它组件的布局方式。
- 绝对布局(AbsoluteLayout):按照绝对坐标来布局组件。
- 1. 线性布局
- <?xml version="1.0" encoding="utf-8"?>
-
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
-
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- >
-
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
-
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:gravity="right"
- >
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:text="确定"
- />
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:text="取消"
- />
- <?xml version="1.0" encoding="utf-8"?>
-
- android:orientation="vertical" android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- android:orientation="horizontal"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_weight="1">
- android:text="red"
- android:gravity="center_horizontal"
- android:background="#aa0000"
- android:layout_width="wrap_content"
- android:layout_height="fill_parent"
- android:layout_weight="1"
- />
- android:text="Teal"
- android:gravity="center_horizontal"
- android:background="#008080"
- android:layout_width="wrap_content"
- android:layout_height="fill_parent"
- android:layout_weight="1"/>
- android:text="blue"
- android:gravity="center_horizontal"
- android:background="#0000aa"
- android:layout_width="wrap_content"
- android:layout_height="fill_parent"
- android:layout_weight="1"
- />
- android:text="orange"
- android:gravity="center_horizontal"
- android:background="#FFA500"
- android:layout_width="wrap_content"
- android:layout_height="fill_parent"
- android:layout_weight="1"
- />
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_weight="1">
- android:text="row one"
- android:textSize="15pt"
- android:background="#aa0000"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- />
- android:text="row two"
- android:textSize="15pt"
- android:background="#DDA0DD"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- />
- android:text="row three"
- android:textSize="15pt"
- android:background="#008080"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- />
- android:text="row four"
- android:textSize="15pt"
- android:background="#FFA500"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- />
- <?xml version="1.0" encoding="utf-8"?>
-
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- android:layout_width="300dp"
- android:layout_height="300dp"
- android:background="#00BFFF"
- />
- android:layout_width="260dp"
- android:layout_height="260dp"
- android:background="#FFC0CB"
- />
- android:layout_width="220dp"
- android:layout_height="220dp"
- android:background="#0000FF"
- />
- <?xml version="1.0" encoding="utf-8"?>
-
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <?xml version="1.0" encoding="utf-8"?>
-
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:padding="10px"
- >
- android:id="@+id/tev1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginBottom="30dp"
- android:text="Please Type Here:"
- />
- android:id="@+id/tx1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_below="@id/tev1"
- />
- android:id="@+id/btn1"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_below="@id/tx1"
- android:layout_alignParentRight="true"
- android:text="确定"
- />
- android:id="@+id/btn2"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_below="@id/tx1"
- android:layout_toLeftOf="@id/btn1"
- android:layout_marginRight="30dp"
- android:text="取消"
- />
更多相关文章
- ReactNative入门-Android原生项目转RN项目
- Android(安卓)学习 笔记_01
- android的Sprite,TiledLayer,LayerManager
- Android自定义Toast的时长、位置、及显示的View
- Android_TextView属性XML详解
- 利用HTML5开发Android
- Android:TextView属性大全
- Android(安卓)Studio快捷键设置成跟Eclipse一样
- 如何实现android清理后台时,自己的软件不被清理