关于xmlns:tools和android:onClick使用

来源:互联网 发布:模拟经营单机 知乎 编辑:程序博客网 时间:2024/04/30 08:16

这篇之前理解有误,感谢2楼apples_benben的回复。

现在建立项目的时候在布局文件里面都会有一个 如下面的内容:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"  ---    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    tools:context=".MainActivity"     ----/>

当然你不用也可以删除掉,tools:context="activity name"这一句不会被打包进APK。只是ADT的Layout Editor在你当前的Layout文件里面设置对应的渲染上下文,说明你当前的Layout所在的渲染上下文是activity name对应的那个activity,如果这个activity在manifest文件中设置了Theme,那么ADT的Layout Editor会根据这个Theme来渲染你当前的Layout。就是说如果你设置的MainActivity设置了一个Theme.Light(其他的也可以),那么你在可视化布局管理器里面看到的背景啊控件啊什么的就应该是Theme.Light的样子。仅用于给你看所见即所得的效果而已。(One more thing: The "tools" namespace is special. The android packaging tool knows to ignore it, so none of those attributes will be packaged into the APK. We're using it for extra metadata in the layout. It's also where for example the attributes to suppress lint warnings are stored -- as tools:ignore.

 

android:onClick

很多时候我们写点击事件是在java代码里面,如果你动态不修改按钮的属性的时候,可以将点击事件写在xml里面,看下面代码:

<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?><LinearLayout 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:orientation="vertical"    tools:context=".Test" >    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:onClick="clickChange"        android:text="点击" /></LinearLayout></span>

<span style="font-size:14px;">public class Test extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.test);}public void clickChange(View v) {Intent intent = new Intent(this, MainActivity.class);startActivity(intent);overridePendingTransition(R.anim.in_from_right, R.anim.out_to_left);}}</span>

在Test.java中我没有获取test.xml布局中的Button实例,同样我也没有在test.xml里面设置“点击”按钮的id,但是我在按钮属性里面设置了android:onClick="clickChange"对应于Test.java中的public void clickChange(View v) 方法,从上面的例子中可以看出设置tools:context后,我们可以简化一些组件实例,就像"点击"
按钮只实现了一个点击功能,我们就没有必要再获取id然后实现他的onclick事件,简化了代码。

4 0