android的c 标签控件页面内的控件不能响应用户操作。

弱鸡成长史
Android Button按钮点击两次之后,才执行点击事件的操作。
在我的项目里有个页面同时存在 一个EditText和一个Button。如图。
由于每次进入这个页面都弹出软键盘,所以我在这个提交订单页面的AndroidManifest.xml中声明了一句
android:windowSoftInputMode="stateHidden|stateUnchanged"
来使软键盘不自动弹出
这时出现了一个问题—— 跳转到这个页面之后需要按两次提交订单 才能执行click操作 查了一下原因 是因为我没有理解focusableInTouchMode跟focusable的区别。
那么focusableInTouchMode这个属性跟focusable有什么区别呢?
下边是我搜索到的讲解,讲的很清楚我直接转载了.
要理解这个属性,首先你得知道,Android不是只面向手机的,它还有可能被安装在电视等非触摸输入设备上.即使是在手机上,目前很多手机也都支持键盘输入了.focusable这种属性,更多的是为了解决非触摸输入的,因为你用遥控器或键盘点击控件,就必然要涉及到焦点的问题,只有可以获得焦点的控件才能响应键盘或者遥控器或者的确定事件.然后再反过来看focusableInTouchMode.这个属性的意思一如字面所述,就是在进入触摸输入模式后,该控件是否还有获得焦点的能力.可以简单的理解为,用户一旦开始通过点击屏幕的方式输入,手机就进入了"touch mode".focusableInTouchMode这种属性,多半是设给EditText这种即使在TouchMode下,依然需要获取焦点的控件.(请自行想下EditText为什么在touch mode下也需要焦点).比如Button之类的控件,在touch mode下,就已经没有获取焦点的必要了.
ok,那么我在我的Button中加上这么一行代码就好了。
没有更多推荐了,& Android学习指南之四十四:用户界面View之Tab标签页
Android学习指南之四十四:用户界面View之Tab标签页
&&&&&& 标签页控件在很多编程技术中都能见到,它使得窗口显示区能够重复利用。在Android中标签页涉及到TabActivity、TabHost、TabWidget等概念。使用Tab标签页控件,可以在同一个空间里放置更多内容。譬如Android自带的拨号程序及通讯录等,就使用了Tab标签功能,如下图所示:&&&&&& 下面我们用实例的方式来学习如何制作上面类似的标签效果,其实还是很简单的。我同样是把解释写到示例的注释里了,注释是我的理解并不准确,方便你记忆而已。&&&&&& 1、新建一个项目 Lesson44_Tab ,起名叫 MainActivity。&&&&&& 2、编写 main.xml 内容如下,这次的形式和普通布局文件有所区别,请注意看写法:
&version=&1.0&&encoding=&utf-8&&&
&!--&根元素是&TabHost&,我们这个文件要和TabActivity配合使用,在TabActivity的源代码里写死了要找的Id是android.R.id.tabhost, &&
&&&&因此这里的ID也要定死成TabHost&的ID&是定死的&&@android:id/tabhost&&下面的类似,不再解释。&--&&
&xmlns:android=&http://schemas.android.com/apk/res/android&&android:id=&@android:id/tabhost&&android:layout_width=&fill_parent&&android:layout_height=&fill_parent&&&
&&&&&android:id=&@android:id/tabs&&android:layout_width=&fill_parent&&android:layout_height=&wrap_content&&&
&&&&&android:id=&@android:id/tabcontent&&android:layout_width=&fill_parent&&android:layout_height=&fill_parent&&android:paddingtop=&65dp&&&
&&&&&&&&&&
&android:id=&@+id/linearLayout1&&android:layout_width=&wrap_content&&android:layout_height=&wrap_content&&&
&&&&&&&&&&&&&android:id=&@+id/textView1&&android:layout_width=&wrap_content&&android:layout_height=&wrap_content&&android:text=&标签1中的内容&&&
&&&&&&&&&&&&&&
&&&&&&&&&&
&android:id=&@+id/linearLayout2&&android:layout_width=&wrap_content&&android:layout_height=&wrap_content&&&
&&&&&&&&&&&&&android:id=&@+id/textView2&&android:layout_width=&wrap_content&&android:layout_height=&wrap_content&&android:text=&标签2中的内容&&&
&&&&&&&&&&&&&&
&&&&&&&& 3、编写 MainActivity,请注意它继承的是 TabActivity 类,解释在代码里:
package&basic.android.lesson44; &&
import&android.app.TabA &&
import&android.os.B &&
import&android.widget.TabH &&
public&class&MainActivity&extends&TabActivity&{ &&
&&&&@Override&&
&&&&public&void&onCreate(Bundle&savedInstanceState)&{ &&
&&&&&&&&super.onCreate(savedInstanceState); &&
&&&&&&&&setContentView(R.layout.main); &&
&&&&&&&&&&
&&&&&&&&TabHost&tabHost&=&this.getTabHost(); &&
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&tabHost.addTab(tabHost.newTabSpec(&OneTab&) &&
&&&&&&&&&&&&&&&&.setIndicator(&OneTab&,&getResources().getDrawable(android.R.drawable.star_on)) &&
&&&&&&&&&&&&&&&&.setContent(R.id.linearLayout1)); &&
&&&&&&&&&&
&&&&&&&&tabHost.addTab(tabHost.newTabSpec(&TwoTab&) &&
&&&&&&&&&&&&&&&&.setIndicator(&TwoTab&,&getResources().getDrawable(android.R.drawable.star_off)) &&
&&&&&&&&&&&&&&&&.setContent(R.id.linearLayout2)); &&
}&&&&&&&& 4、编译程序,运行代码,查看结果:&&&&&& 点击 TwoTab ,标签切换:&&&&&& 大家最好先看一遍注释,程序运行起来后再看看理解下,加深印象。本节就讲到这里了。
本文发布:
本文地址:
发布:鸡啄米
&&( 21:49:26)&&( 21:9:37)
完全随机文章51CTO旗下网站
Android用户界面设计:布局基础
本文为Android用户界面设计教程――布局基础。在这个教程里,我们提供一个关于布局如何适应Android应用程序架构的概述。
作者:RockUX来源:rockux.com| 17:07
理解布局对于好的Android应用设计来说是非常重要的。在这个教程里,我们提供一个关于布局如何适应Android应用程序架构的概述。我们还探讨了一些特定的可用布局控件,用它们来以各种各样的方式组织应用程序屏幕内容。
什么是布局?
Android开发者使用术语&布局&,指的是两种含意中的一种。两种定义在这篇教程中都会用到,而且很不幸的是在Android开发社区它们被混着使用。布局的两种定义如下:
一种资源,它定义了在屏幕上画什么。布局资源存储在应用程序的/res/layout资源目录下的XML文件中。布局资源简单的说就是一个用于用户界面屏幕,或屏幕的一部分,以及内容的模板。
一种视图类,它的主要是组织其它控件。这些布局类(LinearLayout,,RelativeLayout,TableLayout等)用于在屏幕上显示子控件,如文本控件或按钮或图片。
Android用户界面可以定义为XML中的布局资源或程序动态创建。
使用Eclipse设计布局资源
Eclipse的Android开发插件包含了一个很方便的用于设计和预览布局资源的布局资源设计器。这个工具包括两个标签视图:布局视图允许你预览在不同的屏幕下以及对于每一个方向控件会如何展现;XML视图告诉你资源的XML定义。布局资源设计器如下图:
这里有一些关于在Eclipse中使用布局资源编辑器的技巧:
◆使用概要(Outline)窗格来在你的布局资源中添加和删除控件。
◆选择特定的控件(在预览或概要窗口)并使用属性窗格来调整特定控件的属性。
◆使用XML标签来直接编辑XML定义。
很重要的是要记住一点,Eclipse布局资源编辑器不能完全精确的模拟出布局在最终用户那的展现。对此,你必须在适当配置的模拟器中测试,更重要的是在目标设备上测试。而且一些&复杂&控件,包括标签或视频查看器,也不能在Eclipse中预览。
定义XML布局资源
设计程序用户界面最方便且可维护的方式是创建XML布局资源。这个访法极大地简化了UI设计过程,将许多用户界面控件的静态产物和布局,以及控件属性定义移动XML中,代替了写代码。它适应了UI设计师(更关心布局)和开发者(了解Java和实现应用程序功能)潜在的区别。开发者依然可以在必要的时候动态的改变屏幕内容。复杂控件,像ListView或GridView,通常用程序动态地处理数据。
XML布局资源必须存放在项目目录的/res/layout下。对于每一屏(与某个活动紧密关联)都创建一个XML布局资源是一个通用的做法,但这并不是必须的。理论上来说,你可以创建一个XML布局资源并在不同的活动中使用它,为屏幕提供不同的数据。如果需要的话,你也可以分散你的布局资源并用另外一个文件包含它们。
下面是一个简单的XML布局资源,一个LinearLayout模板包含一个TextView和一个ImageView,定义在XML中:
&version=&1.0&&encoding=&utf-8&&&&xmlns:android=&http://schemas.android.com/apk/res/android&&&android:orientation=&vertical&&&&&android:layout_width=&fill_parent&&&android:layout_height=&fill_parent&&&&&android:gravity=&center&&&&&&&android:layout_width=&fill_parent&&&android:id=&@+id/PhotoLabel&&&&&android:layout_height=&wrap_content&&&android:text=&@string/my_text_label&&&&&android:gravity=&center_horizontal&&&android:textSize=&20dp&&&&&&&&android:layout_width=&wrap_content&&&&&android:layout_height=&wrap_content&&&android:src=&@drawable/matterhorn&&&&&android:adjustViewBounds=&true&&&android:scaleType=&fitXY&&&&&android:maxHeight=&250dp&&&android:maxWidth=&250dp&&&&&android:id=&@+id/Photo&&&&&
这个布局资源表示屏幕包含两个控件:首先有一些文字,然后在它下面有一个图片。这些控件组织在一个垂直方向的LinearLayout中。下面两幅图片展示了这个布局在横屏和竖屏下可能的样式:
在屏幕上显示一个布局资源只需要有包括onCreate()的一行代码就可以搞定。如果布局资源存放在/res/layout/main.xml文件,代码可能是:
setContentView(R.layout.main);&
用程序动态定义布局
你也可以用程序创建用户界面组件。为了易组织和可维护性,仅在特殊时候这样做,而不是在一般情况下。不是直接使用setContentView()方法来加载布局资源,你必须创建屏幕内容然后向setContentView()方法提供包含所有要显示的子控件内容的父布局对象。
例如,下面的代码展示了如何用程序实例化一个LinearLayout视图并向里面放置两个TextView。没有使用任何资源。
public&void&onCreate(Bundle&savedInstanceState)&{&&&super.onCreate(savedInstanceState);&&&&&&&&TextView&label&=&new&TextView(this);&&&label.setText(R.string.my_text_label);&&&label.setTextSize(20);&&&label.setGravity(Gravity.CENTER_HORIZONTAL);&&&&&&ImageView&pic&=&new&ImageView(this);&&&pic.setImageResource(R.drawable.matterhorn);&&&pic.setLayoutParams(new&LayoutParams(LayoutParams.WRAP_CONTENT,&LayoutParams.WRAP_CONTENT));&&&pic.setAdjustViewBounds(true);&&&pic.setScaleType(ScaleType.FIT_XY);&&&pic.setMaxHeight(250);&&&pic.setMaxWidth(250);&&&LinearLayout&ll&=&new&LinearLayout(this);&&&ll.setOrientation(LinearLayout.VERTICAL);&&&ll.setLayoutParams(new&LayoutParams(LayoutParams.FILL_PARENT,&LayoutParams.FILL_PARENT));&&&ll.setGravity(Gravity.CENTER);&&&ll.addView(label);&&&ll.addView(pic);&&&setContentView(ll);&&}&
如你所见,这些代码的大小将随着更多的控制添加到屏幕而迅速增加,使得屏幕内容更加难以维护和重用。
探索不同的布局类型
现在让我们把注意力转向对组织其它控件很有用的布局控件。最常用的布局类是:
◆FrameLayout&&&用于显示一堆子视图控件。多视图控件可以添加到这个布局中。它可以用来在相同的屏幕空间展示多个控件。
◆LinearLayout&&&用于在单行或单列中显示子视图控件。这对于创建表单来说是非常方便的布局方法。
◆RelativeLayout&&&用于相对彼此地显示子视图控件。比如,你可以设置一个控件相对另一个控件&在上方&或&在下方&或&在左边&或&在右边&。你也可以相对于父级元素的边界来放置子视图控件。
◆TableLayout&&&用于将子视图控件组织到行或列。对于表格的每一行,单个视图控件使用TableRow布局视图被添加到表格的每一行。
用复合布局来组织控件
布局(LinearLayout,TableLayout,RelativeLayout等)像其它控件一样也是一个控件。这意味着布局控件可以被嵌套。比如,为了组织屏幕上的控件你可以在一个LinearLayout中使用一个RelativeLayout,反过来也行。下面的图展示了一个屏幕,它有一个LinearLayout(父级),一个TableLayout(顶部子节点)以及一个FrameLayout(底部子节点)。
但是小心!保证你的屏幕相对简单,复杂布局加载很慢并且可能引起性能问题。
提供可选布局资源
在你设计你的程序布局资源时考虑设备的差异性。通常情况下是可能设计出在各种不同设备上看着都不错的灵活布局的,不管是竖屏还是模屏模式。必要的时候,你可以引入可选布局资源来处理特殊情况。例如,你可以根据设备的方向或设备是不是有超大屏幕(如网络平板)来提供不同的布局供加载。
想了解更多的关于如何使用可选资源的信息,查看.
布局工具和优化
Android&SDK包括几个可以帮助我们设计,调试和优化布局资源的工具。除了Eclipse的Android插件中内置的布局资源设计器,你可以使用Android&SDK提供的Hierarchy&Viewer(层次结构查看器)和layoutopt。这些工具在你的Android&SDK的/tools目录下可以找到。
你可以使用Hierarchy&Viewer来查看布局运行时的详细情况。可以在Android开发者网站的Hierarchy&Viewer部分了解更多信息。
你可以使用layoutopt(布局优化)命令行工具来优化你的布局文件。优化布局非常重要,因为复杂的布局文件加载很慢。layoutopt工具简单地扫描XML布局文件并找出不必要的控件。在Android开发者网站的layoutopt部分查看更多信息。
Android应用程序用户界面使用布局来定义。有许多不同类型的布局类型可以用来组织屏幕上的控件。布局可以使用XML资源定义,也可以通过Java程序在运行时来定义。可选布局可以在特殊情况下被加载,比如在横屏和竖屏模式下提供一个可选用户界面。最后,设计良好的布局对于应用程序性能很重要;使用像Hierarchy&Viewer和layoutopt之类的Android&SDK工具来调试和优化你的应用程序布局。
【编辑推荐】
【责任编辑:&TEL:(010)】
大家都在看猜你喜欢
头条头条聚焦头条头条
24H热文一周话题本月最赞
讲师:92147人学习过
讲师:30587人学习过
讲师:13015人学习过
精选博文论坛热帖下载排行
您如何保证您的网站确实给予用户他们所需要的,并对您产生商业成果?您需要了解谁是您的用户,您的用户的目标、行为和观点是什么,还要把他...
订阅51CTO邮刊Android webview控件(一) 使用webview开发浏览器实例
在Android开发中,我们难免会使用到网页,而Android给我们提供了非常方便的加载网页的工具--Webview,其实webview在设计上就是独立的一个体系,虽然webview也是一个view,但是webview在加载,显示,绘制等方便,不同于我们使用的各种view:button,imageview,text等,webview中有独立的绘图引擎去绘制网页中的各种资源;
同时对于webview来说,其实webview本身就是一个浏览器,webview控件包含了浏览器的各种功能,google已经开放出了足够的接口,你只需要调用相应的接口,既可以实现一个简单的浏览器;
下面将会使用webview创建一个简单的浏览器;
该浏览器有一个editText,能够让用户输入网址,有一个button让用户点击相应响应加载网页操作,当前指添加了返回按键,让webview回滚上一个加载页面的操作,当然你也可以监听别的按键或者操作,进行上一页或者下一页的操作,这个看各自的设计逻辑;
xml布局文件代码如下:
&?xml version="1.0" encoding="utf-8"?&
&LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.anana.sockettest.WebviewActivity"&
&LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"&
android:id="@+id/weburl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="7"
android:imeOptions="actionSearch"
android:text="http://blog.csdn.net/wuyuxing24/article/details/"/&
android:id="@+id/searchurl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="搜索"/&
&/LinearLayout&
android:layout_weight="20"
android:id="@+id/webshow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
&/LinearLayout&
activity中的代码主要是设置一些webview使用过程中需要设置的Websettings,去设置浏览器支持js脚本,适配屏幕,web的加载器等;
代码如下:
package com.anana.
import android.support.v7.app.AppCompatA
import android.os.B
import android.util.L
import android.view.KeyE
import android.view.MotionE
import android.view.V
import android.webkit.WebChromeC
import android.webkit.WebResourceR
import android.webkit.WebV
import android.webkit.WebViewC
import android.widget.B
import android.widget.EditT
public class WebviewActivity extends AppCompatActivity
private EditT
private WebV
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webview);
weburl = (EditText) findViewById(R.id.weburl);
webshow = (WebView) findViewById(R.id.webshow);
webshow.getSettings().setJavaScriptEnabled(true);
webshow.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webshow.getSettings().setSupportMultipleWindows(true);
webshow.getSettings().setBuiltInZoomControls(true);
webshow.setWebViewClient(new WebViewClient());
webshow.setWebChromeClient(new WebChromeClient());
webshow.setOnTouchListener(new View.OnTouchListener()
public boolean onTouch(View view, MotionEvent motionEvent)
Log.d("browser","motionEvent:"+motionEvent.toString());
webshow.loadUrl("http://cn.bing.com");
searchurl = (Button) findViewById(R.id.searchurl);
searchurl.setOnClickListener(new View.OnClickListener()
public void onClick(View view)
String url = weburl.getText().toString();
Log.d("browser", "url:" + url);
webshow.getSettings().setJavaScriptEnabled(true);
webshow.loadUrl(url);
public boolean onKeyDown(int keyCode, KeyEvent event)
if (keyCode == KeyEvent.KEYCODE_SEARCH || keyCode == KeyEvent.KEYCODE_ENTER)
String url = weburl.getText().toString();
Log.d("browser", "url:" + url);
webshow.getSettings().setJavaScriptEnabled(true);
webshow.loadUrl(url);
if ((keyCode == KeyEvent.KEYCODE_BACK) && webshow.canGoBack())
webshow.goBack();
return super.onKeyDown(keyCode, event);
没有更多推荐了,请问如何用android解析html格式的字符串,并显示在一般控件中_百度知道
请问如何用android解析html格式的字符串,并显示在一般控件中
我有更好的答案
可以使用TextView来显示;TextView t =
t.setText(Html.fromHtml(&&/br&&));
采纳率:51%
html格式的字符串其实就是html内容。可以通过正则来查找标签元素节点。提供几种标签的正则:expr = &&img.*?src=\&(.*?)\&.*?&&; expr = &&link.*?href=\&(.*?)\&.*?&&; expr = &&script.*?src=\&(.*?)\&.*?&&;
当然一个页面内可能会有多个img标签,只能把所有的都匹配出来再筛选。
本回答被网友采纳
private void loadHTML(){
String html = &&!DOCTYPE html&\n& +
&&html&\n& +
&&head&\n& +
&title&&/title&\n& +
&&/head&\n& +
&&body&\n& +
& Hello!耶耶耶&br/&\n& +
&HTML Page here!\n& +
&&img src=\&img/bdlogo.gif\&&&/im&\n& +
&&/body&\n& +
&&/html&&;
webView.loadData(html, &text/html&, &UTF-8&);//
webView.loadDataWithBaseURL(null, html, &text/html&, &UTF-8&, null);
为您推荐:
其他类似问题
android的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 android 标签控件 的文章

 

随机推荐