布局的一种容器,类似HTML中的div标签
layout_height:容器的高度
layout_width:容器的宽度
orientation:容器中内容的,垂直或水平布局的方式
TextView控件TextView属性
id:在Java代码中可以获取控件的唯一标识
text:可以通过text属性设置控件的文本信息
textColor:可以设置文本的字体颜色信息
textSize:可以设置字体的大小(单位推荐使用sp)
gravity:设置文本文字的对齐方式,上,下,左,右,居中,垂直居中,水平居中
shadowColor:设置阴影字体颜色的属性
shadowRadius:设置阴影字体的模糊程度,值越大越模糊,值越小越清晰
shadowDx:阴影字体向横轴上偏移的坐标大小
shadowDy:阴影字体向纵轴上偏移的坐标大小
singleLine:文本是否排布在一行上显示
ellipsize:文本过长时,省略号的显示位置(其中marquee值为滚动显示,前提是要TextView控件聚焦的情况下)
marqueeRepeatLimit:设置marquee值时,marqueeRepeatLimit属性则设置滚动的次数,其中(marquee_forever值为无限循环滚动)
focusable:控件是否可以获取焦点(如果要实现滚动显示,此项必须开启)
focusableInTouchMode:用于控制视图在触摸模式下,是否可以聚焦
clickable:设置控件是否可以单击
当设置这些属性时,TextView运行后无法滚动的问题
解决办法1:
设置clickable属性:设置控件是否可以单击,启动后单击TextView控件实现滚动
解决办法2:
在TextView标记中添加
解决方法3:
重写MyTextView类型,继承TextView, 实现TextView中的方法,将isFocused方法直接return true
public class MyTextView extends TextView {
public MyTextView(Context context) {
super(context);
}
public MyTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public MyTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean isFocused() {
return true;
}
}
Button控件
这三种属性都可以直接设置属性,也可以通过设置drawable的selector的方式来设置
selector中的state_pressed属性时按钮点击时启动的图片或颜色
background:设置背景色,也可以是image,下面例子是设置drawable的selector的方式
backgroundTint:设置文本颜色,下面例子是设置drawable的selector的方式
foreground:设置前景色
android:foreground="#ff00ff00"
按钮的点击事件 点击事件 //点击事件
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e(TAG,"onClick:");
}
});
长按事件
//长按事件
btn.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Log.e(TAG,"onLongClick:");
return false;
}
});
触摸事件
//触摸事件
btn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.e(TAG,"onTouch:"+event.getAction());
return false;
}
});
这三个事件是依此冒泡消息传递的,当用户点击按钮首先出发触摸事件,如果在触摸事件发生长按,会将消息传递给长按事件,如果松手长按事件再把消息传递给单击事件。
如果触摸事件返回true,则消息不会进行向上的传递机制,也就是触摸事件不会把消息传递给长按事件,所以长按事件和单击事件也无法获取消息,不会触发事件。
如果长按事件返回true,同理消息不会进行向上的传递机制,也就是在松手时长按事件不会把消息传递给单击事件,所以单击事件无法触发。



