-----本文内容全部来自于慕课网上的用户笔记,我只是整理过来----
Button&ImageButton
ImageButton是用于在按钮上显示图片的。所以是没有android:text这个属性的。并且如果在布局文件中写上android:text="我是一个按钮",在android 4.4环境中是不会看到任何效果的;
设置background图片会填充整个ImageButton,设置src图片会自适应;
Button显示的文本内容推荐保存在strings.xml文件中
onClick事件
监听的三种方式
1.初始化控件;
2.设置监听器;setOnClickListener
3.实现onClick事件。
a.匿名内部类实现;对象.setOnClickListener(new OnCLickListener)
b.独立类实现;对象.setOnClickListener(监听器实例)
c.接口方式。对象.setOnClickListener(this)
1.匿名监听事件
loginButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View argView0) {
// TODO Auto-generated method stub
System.out.println("我的Button被点击了");
}
});
2.独立事件
loginButton.setOnClickListener(listener);
外部单独:
OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println("独立实现的类触发了");
}
};
3.实现接口
public class MainActivity extends Activity implements OnClickListener{
loginImageButton.setOnClickListener(this);
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("tag","第三种方法");
}
}
实现跑马灯效果
http://www.imooc.com/video/4308
摘自 jiyangxiatian
1.TextView的内容过长时,默认折行
2.跑马灯效果
方法一:(只能实现单个TextView的跑马灯效果)
android:singleLine="true"只能单行,超出的文字显示为"..."
android:ellipsize="marquee"省略号没有,但没有跑马灯效果
android:focusable="true"
android:focusableInTouchMode="true"
方法二:
自定义一个类继承TextView,实现默认的三种构造函数,重写isFocused()方法,返回true
在布局文件中将TextView改为(包名+类名)com.imooc.marqueetextviewdemo.MarqueeText
解析:
方法二中两个TextView都能够实现跑马灯效果是因为重写了isFocused()方法返回true,强制让TextView都focused;而方法一中,第一个TextView获得了焦点,而第二个TextView没有获得焦点,无法实现跑马灯效果
问题:
滚动一段时间后会自己停: android:marqueeRepeatLimit="marquee_forever"
Tips:
px,dp(dip),sp
1.在开发中不建议使用px,px不能根据分辨率来进行等比缩放;
2.dp和sp都可以根据分辨率来进行等比缩放;
3.在控件中做长度大小限制时推荐使用dp,sp更多用于显示文字size;
4.在android最新的SDK中推荐使用dp
使用AutoCompleteTextView
http://www.imooc.com/video/1471
摘自 Miss徐
步骤:
1.初始化控件:先声明(private AutoCompleteTextView acTextView;),然后初始化(acTextView=(AutoCompleteTextView)findViewBy(R.id.autoCompleteTextView1);)
2.创建一个适配器
适配输入内容与数据源
ArrayAdapter adapter = new ArrayAdapter(content,resource,objects);
其中:content——this,上下文的一个对象;
resource——android.R.layout.simple_list_item_1(类似于activity_main的xml文件),对应的一个布局
objects——(参数objects是String类型数组的数据源)
3.初始化数据源(数据源去匹配文本框中输入的内容)
private String[ ] res ={“数据1”,”数据2”,”数据3”,”数据4....”};
把他及添加到adapder中去
ArrayAdapter adapter =new ArrayAdapter(this,
android.R.layout.simple_list_item_1,res);
4.将adapter与当前AutoCompleteTextView控件进行绑定
AutoCompleteTextView.setAdapter(ArrayAdapter);
5.在AutoCompleteTextView里面设置一条属性来使输入够3个字符开始匹配
android:completionThreshold = "3"
MultiAntoCompleteTextView
使用MultiAutoCompleteTextView
http://www.imooc.com/video/1473
摘自 理想
MultiAutoCompleteTextView的设置方法与前者类似
第一步:初始化控件
第二步:需要一个适配器
第三步:初始化数据源
第四步:将adpter与控件绑定
第五步:设置分隔符
具体代码实现:
①xml文件
②初始化:
private MultiAutoCompleteTextView matv = null;
private String [] res ={"beijin1","shijiad","shins","shag","shanede","shadrfe","shaieuj",
"shaere","shieke","adn","as","ader","sh","sher","shadfd","saf","dfji"};
③具体操作:
/*
* 使用MultiAutoCompleteTextView实现自动提示:
*
* 1.初始化控件,记住findViewById(R.id.**)方法
* 2.需要一个适配器
* 3.初始化数据源-->此数据源去匹配文本框内容
* 4.将Adapter与MultiAutoCompleteTextView绑定,调用setAdapter()方法
* 5.设置输入几个字符后才进行自动提示
* 6.设置分隔符
*
*/
this.matv = (MultiAutoCompleteTextView) findViewById(R.id.mctv);
matv.setAdapter(adapter);
//设置逗号为分隔符,即结束符号
matv.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
使用ToggleButton
http://www.imooc.com/video/1612
摘自 Miss徐
ToggleButton默认是off状态
android:textOn="开"
android:textOff="关"——用这两个属性来表示界面显示的内容
通过imageview控件来显示图片
android:background="@drawable/off"来给off状态显示off这张图片
在main activity.xml文件中初始化控件
1.先声明:
private ToggleButton tgbt;
private ImageView img;
2.再初始化
tb = (ToggleButton) findViewById(R.id.toggleButton1);
img =(ImageView)findViewById(R.id.imageView1);
3.监听tb这个开关(给当前的tb设置监听器)
先让mainactivityimplements OnCheckChangListener
然后给tb设置监听器
tb.setOnCheckedChangeListener(this);
监听器的方法:
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
当tb被点击的时候当前方法会被执行。
CompoundButton buttonView参数可以判断是哪个tb被点击,buttonView代表被点击的控件本身
boolean isChecked参数是判断tb的状态,isChecked代表被点击的控件的状态
当点击tb的时候要更换图片:
通过img.setBackgroundResource(isChecked?R.drawable.on:R.drawable.off);通过这个三目运算来实现
使用RadioGroup
http://www.imooc.com/video/1748/0
摘自 不逃课
RadioGroup 属性android:oritentation = "horizontal"/"vertical"
RadionButton 默认被选android:checked = "true"
给RadioGroup增加监听setOnCheckedChangeListener(OnCheckedChangeListener listener);
覆盖方法public void onCheckedChanged(RadioGroup gropup, int checkedId) {
if (checkedId == R.id.radio0) {//checkedId是R.id
Log.i("tag", "你是男孩");
}else if(checkedId == R.id.radio1){
Log.i("tag", "你是女孩");
}
}