万书网 > 文学作品 > Android从入门到精通 > 第87页

第87页






android:id="@+id/button1"



android:background="@drawable/button_state"



android:padding="15px"



android:layout_width="wrap_content"



android:layout_height="wrap_content"



android:text="我是可用按钮"



/>






android:id="@+id/button2"



android:layout_width="wrap_content"



android:background="@drawable/red"



android:layout_marginTop="5px"



android:padding="15px"



android:layout_height="wrap_content"



android:text="单击我可以让上面的按钮变为可用"  />

(4)打开MainActivity,在onCreate()方法中,首先获取第一个按钮,并为其添加单击事件监听器,在重写的onClick()方法中,将该按钮设置为不可用,并改变按钮上的文字,然后获取第二个按钮,并为其添加单击事件监听器,在重写的onClick()方法中,将第一个按钮设置为可用,并改变按钮上显示的文字。关键代码如下:

final  Button  button1  =  (Button)  findViewById(R.id.button1);  //获取布局文件中添加的button1



//为按钮添加单击事件监听器



button1.setOnClickListener(new  OnClickListener()  {



@Override



public  void  onClick(View  v)  {



Button  b  =  (Button)  v;  //获取当前按钮



b.setEnabled(false);  //让按钮变为不可用



b.setText("我是不可用按钮");  //改变按钮上显示的文字



Toast.makeText(MainActivity.this,  "按钮变为不可用",  Toast.LENGTH_SHORT)



.show();  //显示消息提示框



}



});



Button  button2  =  (Button)  findViewById(R.id.button2);  //获取布局文件中添加的button2



//为按钮添加单击事件监听器



button2.setOnClickListener(new  OnClickListener()  {



@Override



public  void  onClick(View  v)  {



button1.setEnabled(true);  //让button1变为可用



button1.setText("我是可用按钮");  //改变按钮上显示的文字



}



});

运行本实例,将显示如图8.10所示的运行结果。单击“我是可用按钮”按钮,该按钮将变为不可用按钮,如图8.11所示。当第一个按钮变为不可用按钮后,单击“单击我可以让上面的按钮变为可用”按钮,可以让已经变为不可用的按钮再次变为可用按钮。





图8.10 显示可用按钮  图8.11 显示不可用按钮





8.7 样式(style)和主题(theme)资源

教学录像:光盘\TM\lx\8\样式(style)和主题(theme)资源.exe

在Android中,提供了用于对Android应用进行美化的样式和主题资源,使用这些资源可以开发出各种风格的Android应用。下面对Android中提供的样式资源和主题资源进行详细介绍。

8.7.1 样式资源

样式资源主要用于对组件的显示样式进行控制,如改变文本框显示文字的大小和颜色等。样式资源文件放置在res\values目录中,其根元素是标记,在该元素中,使用标记定义样式,其中,通过为标记设置name属性来指定样式的名称;在起始标记中间添加标记来定义格式项,在一个标记中,可以包括多个标记。例如,在Android项目中,创建一个名称为styles.xml的样式资源文件,在该文件中定义一个名称为title的样式,在该样式中,定义两个样式,一个是设置文字大小的样式,另一个是设置文字颜色的样式,styles.xml的具体代码如下:









48px



#f60









在Android中,还支持继承样式的功能,只需要在标记中使用parent属性进行设置即可。例如,定义一个名称为basic的样式,然后定义一个名称为title的样式,并让该样式继承basic样式,关键代码如下:









48px



#f60











10px



center









说明:  当一个样式继承另一个样式后,如果在该子样式中,出现了与父样式相同的属性,将使用子样式中定义的属性值。

在样式资源文件中定义样式资源后,就可以在XML文件中使用该样式资源了,其基本语法格式如下:

@[:]style/样式资源名

例如,在定义TextView组件时,使用名称为title的样式资源为其定义样式,可以使用下面的代码:




android:id="@+id/textView1"



style="@style/title"



android:layout_width="match_parent"



android:layout_height="wrap_content"



android:text="TextView"  />

8.7.2 主题资源

主题资源与样式资源类似,定义主题资源的资源文件也是保存在res\values目录中,其根元素同样是标记,在该标记中,也是使用标记定义主题。所不同的是,主题资源不能作用于单个的View组件,而是对所有(或单个)Activity起作用。通常情况下,主题中定义的格式都是为改变窗口外观而设置的。例如,要定义一个用于改变所有窗口背景的主题,可以使用下面的代码: