草庐IT

Android:垂直画廊?

coder 2023-11-30 原文

我正在寻找一个行为类似于画廊小部件但垂直滚动而不是水平滚动的小部件。我四处搜索,显然答案是不存在这样的预制小部件。

所以我对自己说,哦,好吧,我将查看 android 源代码中的图库类并将其修改为垂直滚动。没那么容易。 android SDK 隐藏了很多(对于框架维护来说是可以理解的),但它也使得扩展小部件变得非常困难。例如,gallery 类使用大量来自其父级 AbsSpinner(mSelectedPosition 等)及其父级的父级等的成员变量……从应用程序开发人员的角度来看,这些变量根本无法访问。如果不能访问这些成员变量,我就无法使用 gallery 类中的类似代码供我自己使用。

如果没有向上移动继承链并将那些父类的源代码全部放在我的项目中,或者在不使用已经解决问题的现有框架小部件的情况下从头开始编写小部件,我找不到办法获得垂直滚动画廊。

有更好的办法吗?为什么 android 框架让扩展 widget 如此困难?

最佳答案

Is there a better way around?

由于我们不知道您在构建什么,因此无法确定。我同意 Yoni Samlan 的评论,即 ListView 可能足以满足您的需求。

Why does the android framework make extending widget so difficult?

虽然可以想象,重新实现的 Gallery 可能会让您更轻松地使其以不同的方式定位,但核心 Android 团队必须权衡这种重新实现与其他开发优先级。

其中一个优先事项是 SDK 保真度。他们希望尽可能确保为 Android 1.5 编写的代码无需修改即可在 Android 2.1 上运行。这在两个方面限制了他们。首先,他们不能仅仅更改现有的 Gallery 来满足您的需求,如果这样做会导致他们破坏现有的 API。其次,核心 Android 团队不会公开新的方法或类,即使这些方法或类可能对第三方开发人员有益,除非并且直到团队准备好长期支持这些方法或类。

Android 最初是在 SDK 存在之前编写的。这就是为什么大多数内置应用程序(例如计算器)不能单独使用 SDK 构建,而是需要作为固件镜像的一部分构建的原因。同样,作为创建初始 SDK 的一部分,核心 Android 团队必须做出决定,即如何最好地利用现有代码并创建我们可以使用的公共(public)内容和我们不能使用的保护/私有(private)内容,同时牢记 SDK 保真度。您可能已经注意到,Android 非常庞大,因此创建 SDK 肯定需要花费大量的员工时间。重写很多内容以增加某人创建垂直 Gallery 的可能性,这在他们的列表中可能并不高。

在理想世界中,是的,我们将能够更轻松地扩展内置小部件并显着修改它们的行为。同样,在理想世界中,我会有头发……:-)

关于Android:垂直画廊?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2302880/

有关Android:垂直画廊?的更多相关文章

  1. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  2. ruby - 在 Ruby 中,垂直线是什么? - 2

    1.upto(9){|x|printx}为什么这行不通?{printx|x}}y呢? 最佳答案 它用于传递给您的block的参数。即在您的示例中,upto将使用1到9中的每个数字调用您的block,当前值可作为x获得。block参数可以有任何名称,就像方法参数一样。例如1.upto(9){|num|putsnum是有效的。就像一个方法的参数一样,一个block也可以有多个参数。例如hash.each_pair{|key,value|puts"#{key}is#{value}"} 关于ru

  3. ruby - Prawn :有没有办法让一个盒子里的所有内容垂直对齐? - 2

    我正在尝试将一些内容垂直居中放置在bounding_box中。对于单个文本,这没问题:bounding_box([0,bounds.top],:width=>pdf.bounds.right,:height=>pdf.bounds.top)dotext"verticallyalignedinthesurroundingbox",:valign=>:centerend但是如果我的边界框中有多个元素,我该怎么办:bounding_box([0,bounds.top],:width=>pdf.bounds.right,:height=>pdf.bounds.top)dotext"vertic

  4. Android Studio开发之使用内容组件Content获取通讯信息讲解及实战(附源码 包括添加手机联系人和发短信) - 2

    运行有问题或需要源码请点赞关注收藏后评论区留言一、利用ContentResolver读写联系人在实际开发中,普通App很少会开放数据接口给其他应用访问。内容组件能够派上用场的情况往往是App想要访问系统应用的通讯数据,比如查看联系人,短信,通话记录等等,以及对这些通讯数据及逆行增删改查。首先要给AndroidMaifest.xml中添加响应的权限配置 下面是往手机通讯录添加联系人信息的例子效果如下分成三个步骤先查出联系人的基本信息,然后查询联系人号码,再查询联系人邮箱代码 ContactAddActivity类packagecom.example.chapter07;importandroid

  5. Android 10.0 设置默认launcher后安装另外launcher后默认Launcher失效的功能修复 - 2

    1.前言 在10.0的系统rom定制化开发中,在系统中有多个launcher的时候,会在开机进入launcher的时候弹窗launcher列表,让用户选择进入哪个launcher,这样显得特别的不方便所以产品开发中,要求用RoleManager的相关api来设置默认Launcher,但是在设置完默认Launcher以后,在安装一款Launcher的时候,默认Launcher就会失效,在系统设置的默认应用中Launcher选项就为空,点击home键的时候会弹出默认Launcher列表,让选择进入哪个默认Launcher.所以需要从安装Launcher的流程来分析相关的设置。来解决问题设置默认La

  6. AiBote 2022 新研发的自动化框架,支持 Android 和 Windows 系统。速度非常快 - 2

    Ai-Bot基于流行的Node.js和JavaScript语言的一款新自动化框架,支持Windows和Android自动化。1、Windowsxpath元素定位算法支持支持Windows应用、.NET、WPF、Qt、Java和Electron客户端程序和ie、edgechrome浏览器2、Android支持原生APP和H5界面,元素定位速度是appium十倍,无线远程自动化操作多台安卓设备3、基于opencv图色算法,支持找图和多点找色,1080*2340全分辨率找图50MS以内4、内置免费OCR人工智能技术,无限制获取图片文字和找字功能。5、框架协议开源,除官方node.jsSDK外,用户可

  7. Android Gradle 7.1+新版本依赖变化 - 2

    前一段时间由于工作需要把可爱的小雪狐舍弃了,找到了小蜜蜂。但是新版本的小蜜蜂出现了很多和旧版本不一样的位置。1.功能位置迁移,原来在工程build.gradle的buildscript和allprojects移动至setting.gradle并改名为pluginManagement和dependencyResolutionManagement。里面的东西依旧可以按照原来的copy过来。pluginManagement{repositories{gradlePluginPortal()google()mavenCentral()}}dependencyResolutionManagement{r

  8. ruby - Ruboto 的最佳教程(适用于 Android 的 ruby​​)? - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭9年前。Improvethisquestion我几乎用完了Ruby,但现在想试试Ruboto,android上的ruby​​。谷歌未能给我足够的(几乎没有结果)。所以任何人都可以分享一些关于Ruboto的教程。

  9. Android Studio 解决Could not resolve com.android.tools.build:gradle:7.4.2问题 - 2

    Aproblemoccurredconfiguringrootproject'MyApplication2'.>Couldnotresolveallfilesforconfiguration':classpath'.  >Couldnotresolvecom.android.tools.build:gradle:7.4.2.   Requiredby:     project:>com.android.application:com.android.application.gradle.plugin:7.4.2     project:>com.android.library:com.andr

  10. Android对话框的详细介绍(提示对话框,自定义对话框) - 2

    简介:我们都知道在Android开发中,当我们的程序在与用户交互时,用户会得到一定的反馈,其中以对话框的形式的反馈还是比较常见的,接下来我们来介绍几种常见的对话框的基本使用。前置准备:(文章最后附有所有代码)我们首先先写一个简单的页面用于测试这几种Dialog(对话框)代码如下,比较简单,就不做解释了一、提示对话框(即最普通的对话框)首先我们给普通对话框的按钮设置一个点击事件,然后通过AlertDialog.Builder来构造一个对象,为什么不直接Dialog一个对象,是因为Dialog是一个基类,我们尽量要使用它的子类来进行实例化对象,在实例化对象的时候,需要将当前的上下文传过去,因为我这

随机推荐