autojs自定义下拉框_autojs下拉框控件属性大全_牙叔教程的博客-程序员秘密

技术标签: adapter  autojs  下拉框  spinner  

牙叔教程 简单易懂

使用场景

自定义下拉框spinner

效果展示

git动图较大, 稍等片刻, 马上就好
在这里插入图片描述

autojs版本

8.8.12-0

萌新三连问

  1. 我要改背景
  2. 我要改字体颜色
  3. 我改了下拉框数据, 怎么颜色又变回去啦

疑问解答

spinner布局有两种

  • 未展开之前的布局, 由getView生成
  • 展开之后的布局, 由getDropDownView生成

修改颜色和背景就和普通的UI修改一样

修改数据之后, 颜色又变回去了, 这是因为没有重新设置adapter

代码讲解

1. 导入类
importClass(android.graphics.drawable.Drawable);
importClass("android.graphics.Rect");
importClass("android.graphics.NinePatch");
importClass("android.graphics.drawable.NinePatchDrawable");
importClass("android.graphics.BitmapFactory");
importClass("android.graphics.Bitmap");
2. 布局
ui.layout(
  <vertical id="parent">
    <text id="adv" marginTop="20" w="*" gravity="center" textSize="30sp" textStyle="bold"></text>
    <button id="btn" margin="20">
      切换选项
    </button>
    <spinner id="spinner" margin="36" entries="男|女|未知" />
  </vertical>
);
3.点击按钮, 切换数据
ui.btn.click(function () {
    
  var mCountries = ["中国", "美国", "日本"];
  setAdapter(ui.spinner, mCountries);
});
4. 设置下拉框默认数据
let dataList = ["牙叔教程111", "牙叔教程222", "牙叔教程333"];
setAdapter(ui.spinner, dataList);
//设置下拉框默认的显示第一项
ui.spinner.setSelection(1);
5. 获取九图背景
let filePath = "./bili.9.png";
filePath = files.path(filePath);
let drawable = imageOperations(filePath);
function imageOperations(filePath) {
    
  let bitmap = BitmapFactory.decodeFile(filePath);
  let chunk = bitmap.getNinePatchChunk();
  let npd = new NinePatchDrawable(context.getResources(), bitmap, chunk, new Rect(), null);
  return npd;
}

SpinnerAdapter

getDropDownView 展开后的布局

getView 展开之前的布局

function getAdapter(dataList) {
    
  let adapter = JavaAdapter(android.widget.SpinnerAdapter, {
    
    getCount: function () {
    
      return dataList.length;
    },
    getItem: function (position) {
    
      return dataList[position];
    },
    getItemId: function (position) {
    
      return position;
    },
    getViewTypeCount: function () {
    
      return 1;
    },
    getItemViewType: function (pos) {
    
      return 0;
    },
    getDropDownView: function (position, convertView, parent) {
    
      if (!convertView) {
    
        let boxXml = (
          <frame>
            <TextView id="_text" paddingTop="33dp" gravity="center" textColor="#f44336" textSize="20sp" />
          </frame>
        );
        convertView = ui.inflate(boxXml);
        convertView.attr("bg", "#00ff0000");
        convertView.getChildAt(0).setBackgroundDrawable(drawable);
      }
      let item = dataList[position];
      convertView.getChildAt(0).setText(item);
      return convertView;
    },
    getView: function (position, convertView, parent) {
    
      if (!convertView) {
    
        let boxXml = <text id="name" textColor="#4caf50" gravity="center" textSize="20sp"></text>;
        convertView = ui.inflate(boxXml);
      }
      let item = dataList[position];
      convertView.setText(item);
      return convertView;
    },
  });
  return adapter;
}

完整源码

公众号回复 自定义下拉框

声明

部分内容来自网络
本教程仅用于学习, 禁止用于其他用途

bilibili

牙叔教程

微信公众号 牙叔教程

在这里插入图片描述

QQ群

747748653
在这里插入图片描述

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/snailuncle2/article/details/118052303

智能推荐

mfc应用程序只运行一个实例_mfc中实现只有一个主程序运行_mengzhishen的博客-程序员秘密

1.在APP中添加互斥量HANDLE m_hMutex;2.然后在InitInstance()中添加m_hMutex=::CreateMutex(NULL,FALSE,_T("应用程序名字(带App的例如CCSerPcieApp)")); if (GetLastError()==ERROR_ALREADY_EXISTS) {  //  AfxMessageBox("已经运行

util_pxy_Shineyo的博客-程序员秘密

util.inheritsutil.inherits(constructor,superConstructor)是一个实现对象间原型继承的函数。示例如下:var util=require('util');function Base(){ this.name='base'; this.base=2016; this.sayHello=function(){ co

c编程修养_iteye_7408的博客-程序员秘密

1、版权和版本 ——————— 好的程序员会给自己的每个函数,每个文件,都注上版权和版本。 对于C/C++的文件,文件头应该有类似这样的注释: /************************************************************************ * * 文件名:network.c * * 文件描述:网络通讯函数集...

[转载]技改之路:从单块应用到微服务,我的血泪总结_JackZhou2017的博客-程序员秘密

技改是技术改造的简称,是技术的蜕变。技术改造,对于公司和技术人员而言都非常难得,参与者多,主导者少。我有幸前后主导过3次OTA系统的技改,规模有大有小,每次环境和问题虽不一样,但还是有套路可循。 http://www.open-open.com/lib/view/open1472631729395.html

[ZJOI2012]灾难_灾难-_qq_38234381的博客-程序员秘密

题目链接:https://www.luogu.org/problemnew/show/P2597首先一看到这道题可能感觉并没有什么思路,也很好联想到topo排序,但也应该很容易就发现topo是过不了的,例如样例。那么我们可以仔细观察一下样例构建出的图,会发现对于任意个点x,若它所有的食物灭绝了,那么它也一定要灭绝,而它所有食物灭绝的条件就是它们的lca灭绝了。所以我们可以把节点x连到它...

Android 布局优化-常用布局优化工具_android 布局优化工具_Lud_的博客-程序员秘密

1.Hierarchy Viewer2.Lint(1)Hierarchy ViewerHierarchy Viewer是Android自带的一款可视化调试工具,用来检查Layout嵌套及绘制时间。以可视化的布局角度直观获取Layout布局设计和各种属性信息。注:由于Android安全考虑Hierarchy Viewer只能连接Android开发手机或模拟器。接下来介绍如何使用Hiera...

随便推点

numpy中的ndarray与pandas的Series和DataFrame之间的区别_peiwang245的博客-程序员秘密

在数据分析中,经常涉及numpy中的ndarray对象与pandas的Series和DataFrame对象之间的转换,让大家产生困惑。本文将简单介绍这三种数据类型,并以股票信息为例,给出相关对象之间转换的具体示例。ndarray数组对象NumPy中的ndarray是一个多维数组对象,该对象由两部分组成:实际的数据; 描述这些数据的元数据。大部分的数组操作仅仅修改元数据部分,而不改变...

Quaternion.Slerp_一人一日月的博客-程序员秘密

Quaternion.Slerpstatic Quaternion Slerp(Quaternion from, Quaternion to, float t);DescriptionSpherically interpolates between from and to by t.从from到to在t位置的球状插值using Uni

python 判断是不是列表_python 判断变量类型是否为list(列表) isinstance() type()_weixin_39782355的博客-程序员秘密

slink = ['','php 疑难问题1:本地文件缓存txt不完整','','php redis 多维数组操作']一、判断是否为列表格式:print(isinstance(变量,list))print(isinstance(slink,list))结果 :true说明为列表(list)false说明不是列表(list)二、获取类型print(type(slink))执行结果为:说明为列表类型三...

从零开始C语言精讲篇1:初识C语言_劲夫学编程的博客-程序员秘密

这里是C语言专栏重制版,笔者将定期更新C语言相关文章,让读者快速上手,并深入理解C语言。笔者在之前也有一些C语言和JAVA基础与进阶相关文章,感兴趣的读者可自行查看。本专栏是面向零基础或者刚刚入门又或者准备系统复习一下C语言的读者。也是为笔者本人考研的C语言打一个铺垫,未来与诸君共勉。希望大家读完文章都能有所收获。......

ExecuteNonQuery、ExecuteScalar、Dataset、ExecuteReader的不同意思和用法_execute reader execute dataset_zzl0223的博客-程序员秘密

ExecuteNonQuery、ExecuteScalar、Dataset、ExecuteReader的不同意义和用法  1. ExecuteNonQuery 方法执行一个非查询语句( Update 、 Insert 、 Delete 等)   返回值是执行的影响行数,返回类型为int  例如:  using (SqlCommand cmd = conn.CreateComma

mysql软删除唯一_软删除唯一索引设置及 Java Zero Date 解决办法_少女心杀手刘小姐的博客-程序员秘密

数据是无价的,当我们删除数据时,多数情况下我们会采用设置数据不可见的方法来替代真正意义上的物理删除,这种删除方法就叫做“软删除”。软删除可以保留数据的历史记录,便于今后数据分析以及一些故障情况下的恢复,但软删除也随之带来一些问题:数据表唯一索引失效。# 唯一索引为什么会失效很好理解,当我们使用软删除方法时,实际上是将删除delete from table 变为了 update table,虽然对外...

推荐文章

热门文章

相关标签