- 根据按钮上显示的内容,按钮可以分为几种?分别用什么属性设置?
答:有文本的,用text属性进行设置,有图标的,用ImageButton标签,属性为src、既有文本又有图标的,用text属性设置文本,drawablexxx设置图片
- 按钮的onClick属性有什么用?怎么用?它的值所指定的响应方法在哪里定义,有什么特殊要求?方法的参数是什么?
答:onClick属性设置按钮的单击响应方法,它所指定的响应方法在它所在的布局对应的activity中进行定义;该响应方法必须满足下面的要求:
必须是public
返回void
有一个唯一的View参数
- 还可以怎么设置按钮的监听方法?代码模板是什么?望大家理解该模板
答:还可以在程序中使用事件监听的方式,这种方式要求你要实例化一个Button对象,再创建一个View.OnClickListener对象,并把该对象作为实参传递给Button的setOnClickListener(View.OnClickListener),如下:
Button button = (Button) findViewById(R.id.button_send);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Do something in response to button click
}
});
- 如何定义按钮的样式?
答:可以通过设置整个app的主题来按钮的样式,还可以设置style属性来制定按钮的样式
- 如何定义无边框按钮?
答:定义属性style="?android:attr/borderlessButtonStyle"
- 如何定制背景?
答:在一个XML文件中定义三种不同的图片或者颜色对应不同的按钮状态:
1. 创建三个不同的位图图片,代表default、pressed和focused这三种状态,为保证你的图片适应不同的大小,该图片应设计为Nine-patch图片
2. 把这些图片放在res/drawable/这个工程目录中,确保每个图片的名字反映按钮的状态,比如button_default.9.png、button_pressed.9.png,、 button_focused.9.png
3. 在res/drawable/目录中创建一个新的XML文件(名字诸如button_custom.xml之类),把下面的XML插入文件中:
<?xml version=”1.0” encoding=”utf-8”?>
<selector xmlns:android=”http://schemas.android.com/apk/res/android”>
<item android:drawable=”@drawable/button_pressed”
android:state_pressed=”true” />
<item android:drawable=”@drawable/button_focused”
android:state_focused=”true” />
<item android:drawable=”@drawable/button_default” />
</selector>
这里定义了一个drawable资源,会根据按钮的不同状态应用不同的图片:
第一个<item>定义了当按钮按下时的位图
第二个<item>定义了当按钮获得焦点时的位图
第三个<item>定义了当按钮处于default状态时的位图(既不是按下,也不是获得焦点)
注意:<item>的顺序非常重要,当这个drawable资源被引用的时候,<item>元素按顺序对应到当前的按钮状态。因为default位图在最后,只有当android:state_pressed 和 android:state_focused 均为false时才会应用。
这个XML文件表示一个drawable资源,当某个按钮引用它作为背景的时候,会根据它的状态显示不同的图片
我们只需要在XML文件中修改button的背景即可:
<Button
android:id="@+id/button_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage"
android:background="@drawable/button_custom" />
- 什么是ninepatch图片,该图片中的四条线分别表示什么意义?它的名字怎么命名?相应的xml什么用?里面的子标签什么含义?
答:一个NinePatchDrawable图片是一个可以拉伸的位图图像,Android可以自动根据view中的内容适应其大小。在图片的顶部及左边绘制上一像素宽的黑色线,表示可伸缩的范围,边框的其余部分为白色或者透明。在图片的右边及下边划一条线来定义一个可选的drawable区域(实际上就是padding线)。文件名的后缀必须是.9.png。其余解答见6.
- 怎么设置按钮的“.9”背景图片?
答: 将.9图片放置在drawable目录下,设置按钮的background属性
- 如何使用android sdk中的制作.9文件的工具?如果不设置padding线,那内容到边之间的padding怎么确定,实验一下?
答:在android的sdk中的tools目录下找到draw9patch,启动它,然后拖动8个角线进行.9区域的设置,根据文档说明,没有设置padding线,则左边及上边的线兼具padding线的作用
- 如何在studio中显示代码的行号?学会看错误提示信息,这很重要。
答:在代码区的左边右击,在弹出的菜单中选中“Show Line Numbers”
- 输入文本框的标签是什么?
答:EditText
- 如何指定输入文本框的类型?如何组合输入模式?
答:设置InputType属性,该属性的值可以通过“|”进行组合
- 标签属性的值是不是可以通过java代码进行修改?
答:可以
- landscape和portrait什么区别?如何在虚拟机上切换?
答:landscape为水平显示,portrait为垂直显示
- 如何设置虚拟机的物理键盘或虚拟键盘?
答:见教学视频
- 什么是输入键盘的action?默认值是什么?如何设置该action?如何监听该动作(监听模板代码)?
答:在用户输入完成后的动作,如果你没有显式的指定输入的action的话,系统会查看是否有设置了android:focusable的域(不一定是文本框),如果有,系统会执行本文本框的actionNext动作,这样用户可以进行下一个域的输入;如果没有,系统会执行文本框的actionDone动作。如果你使用imeOption属性指定了键盘的动作,你可以监听该动作事件。方法是实现TextView.OnEditorActionListener接口中的回调方法,向该方法传递actionID值来区分动作类型,如下:
EditText editText = (EditText) findViewById(R.id.search);
editText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
boolean handled = false;
if (actionId == EditorInfo.IME_ACTION_SEND) {
sendMessage();
handled = true;
}
return handled;
}
});
- 如何添加其他的键盘flag与提供自动补全?如何在strings.xml中定义字符数组资源?
答:见文档
- 如何在java代码中获取字符数组资源从而进行操作?理解代码模板
答:String[] countries = getResources().getStringArray(R.array.countries_array);参数R.array.countries_array表示strings.xml中定义的字符串数组
- 什么是复选框?在布局文件中是哪个标签?
答:复选框是能同其他复选框同时选中的控件,它的标签为CheckBox
- 复选框后的文字怎么加上?
答:使用text属性
- 如何设置复选框的单击事件处理方法?若干复选框可以用同一个事件处理方法进行处理吗?如何在方法中区分选择的是哪个复选框?
答:设置onClick属性设置单击事件,可以使用同一个事件处理方法,在方法中通过调用view.getId方法对选中的复选框进行区别。
- 如何修改activity的布局?一个activity同时可以有几个布局?
答:调用setContentView(R.layout.activity_main);一个activity同时只能有一个布局有效
- 什么是无线按钮?在布局文件中是哪个标签?为什么要把这种标签放在RadioGroup中?RadioGroup是哪个布局的子类,这意味着什么?如何设置无线按钮的默认选择?
答:即是单选按钮,是RadioButton标签,必须将若干个单选按钮放在RadioGroup中组成单选按钮组,RadioGroup是LinearLayout的子类,这意味着它实际上是线性布局的,我们设置RadioButton的checked属性为true可以将该单选按钮设为默认选择。
- 如何设置无线按钮的单击事件处理方法?
答:设置无线按钮的onClick属性到某个事件处理方法
- 什么是切换按钮?是哪些标签?如何在java程序中改变按钮的状态?如何响应用户对按钮的操作?(代码模板)
答:切换按钮可以使得用户可以在两种状态中切换。有ToggleButton和Switch两种。需要在程序中改变按钮的状态,可以使用CompoundButton.setChecked() 或者 CompoundButton.toggle()方法。为响应用户对按钮的操作,创建一个CompoundButton.OnCheckedChangeListener 对象,并调用setOnCheckedChangeListener()把它和按钮联系起来,例如:
ToggleButton toggle = (ToggleButton) findViewById(R.id.togglebutton);
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// The toggle is enabled
} else {
// The toggle is disabled
}
}
});