栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

安卓学习之LinearLayout+TextView+Button

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

安卓学习之LinearLayout+TextView+Button

布局页面

布局的一种容器,类似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,同理消息不会进行向上的传递机制,也就是在松手时长按事件不会把消息传递给单击事件,所以单击事件无法触发。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/945206.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号