如何创建一个字母滚动条显示android中的所有字母?

2024-03-09

My purpose is to obtain something like that :
http://appsreviews.com/wp-content/uploads/2010/08/Cures-A-Z-App-for-iPhone.jpg

但我能找到的唯一例子是这样的列表:
android - 列表视图快速滚动与字母表就像 iPhone 联系人活动 https://stackoverflow.com/questions/5129250/android-listview-fastscroll-with-alphabet-like-on-iphone-contacts-activity

显然,我不想要像联系人这样在快速滚动时显示字母的列表。我知道该怎么做。

欢迎任何指点。 (我试过this https://stackoverflow.com/questions/7129069/how-to-show-alphabetical-letters-on-side-of-android-listview但没有成功)

下面是 FunkTheMonk 建议的完整解决方案(非常感谢):

像往常一样定义列表视图。定义一个RelativeLayout,其中包含ListView在右边,一个LinearLayout与所有的字母。为了更好的解决方案,可以动态生成字母列表以仅显示列表中的字母。然后在 onClick 方法中,添加滚动列表的行为:

xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginRight="28dip" />

    <LinearLayout android:orientation="vertical"
        android:layout_width="28dip" android:layout_height="wrap_content"
        android:layout_alignParentRight="true" android:background="@android:color/transparent" >

        <TextView android:id="@+id/A" android:text="A" android:tag="A"
            style="@style/alphabetTextView"/>
        <TextView android:id="@+id/B" android:text="B" android:tag="B"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/C" android:text="C" android:tag="C"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/D" android:text="D" android:tag="D"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/E" android:text="E" android:tag="E"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/F" android:text="F" android:tag="F"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/G" android:text="G" android:tag="G"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/H" android:text="H" android:tag="H"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/I" android:text="I" android:tag="I"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/J" android:text="J" android:tag="J"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/K" android:text="K" android:tag="K"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/L" android:text="L" android:tag="L"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/M" android:text="M" android:tag="M"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/N" android:text="N" android:tag="N"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/O" android:text="O" android:tag="O"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/P" android:text="P" android:tag="P"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/Q" android:text="Q" android:tag="Q"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/R" android:text="R" android:tag="R"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/S" android:text="S" android:tag="S"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/T" android:text="T" android:tag="T"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/U" android:text="U" android:tag="U"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/V" android:text="V" android:tag="V"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/W" android:text="W" android:tag="W"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/X" android:text="X" android:tag="X"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/Y" android:text="Y" android:tag="Y"
            style="@style/alphabetTextView" />
        <TextView android:id="@+id/Z" android:text="Z" android:tag="Z"
            style="@style/alphabetTextView" />

    </LinearLayout>
</RelativeLayout>

Java

@Override
public void onClick(View v) {
    String firstLetter = (String) v.getTag();
    int index = 0;
    if (stringList != null) {
        for (String string : stringList) {
            if (string.startsWith(firstLetter)) {
                index = stringList.indexOf(string);
                break;
            }
        }
    }
    lv.setSelectionFromTop(index, 0);
}

这是iPhone的功能,Android使用快速滚动。我建议您使用平台替代方案,而不是尝试强制执行通用功能。

如果必须的话,您必须自己实现。将列表视图放入相对布局中,并将 A-Z TextView 放入垂直 LinearLayout 中,该布局设置为layout_alignParentRight="true"。将 TextView 标签适当设置为 A-Z 并设置onClick="quickScroll"在他们所有人身上。

在您的活动中实施:

public void quickScroll(View v) {
    String alphabet = (String)v.getTag();
    //find the index of the separator row view
    list.setSelectionFromTop(index, 0);
}

这将滚动到单击时选定的字母,但我相信您可以将手指滚动到 iPhone 上的字母表上,它会更新列表?为此,您必须实现 onTouchListener 而不是 onClickListener。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建一个字母滚动条显示android中的所有字母? 的相关文章

  • 如何将安卓手机从睡眠状态唤醒?

    如何以编程方式将 Android 手机从睡眠状态唤醒 挂起至内存 我不想获取任何唤醒锁 这意味着手机在禁用 CPU 的情况下进入 真正的 睡眠状态 我想我可以使用某种RTC 实时时钟 机制 有人有例子吗 Thanks 为了让Activity
  • 在自定义对象中创建时粘性服务不会重新启动

    我有一个具有绑定服务的单例对象 我希望它重新启动 当我从启动器启动应用程序时 单例对象将初始化并绑定到这个现有的服务实例 以下是在单例中创建和绑定服务的代码 public class MyState private static MySta
  • Phonegap - 如何将.txt文件保存在Android手机的根目录中

    我正在尝试使用phonegap 将 txt 文件保存在Android 手机的根目录中 我已经安装了这些插件 cordova plugin file 和 cordova plugin file transfer 在 config xml 文件
  • Android:“dp”到“px”转换?

    我正在读这篇文章 http developer android com guide practices screens support html http developer android com guide practices scre
  • Android libgdx 首选项丢失

    我在 Libgdx 引擎中创建了 Android 游戏 一段时间后 我注意到在某些应用程序杀手中杀死该应用程序后 或者如果我在 Android 设置中执行 强制关闭 操作 我保存到首选项中的游戏选项就会丢失 有办法防止这种情况吗 我从来没有
  • (Ionic 2)尝试回退到 Cordova-lib 执行时发生错误:TypeError:无法读取未定义的属性“then”

    Edit 使用 ionic 2 时会发生这种情况 我知道它还不稳定 但我认为可能有一些解决方案 因为其他人似乎没有遇到这个问题 Edit end 由于某种原因 我在尝试使用 ionic build android 和 ionic build
  • 无法在自定义 AOSP 上安装 Google Play 中的某些应用程序:项目不可用。理由:9

    我在尝试从 Google Play 安装某些应用程序时收到以下错误 LibraryUtils isAvailable not available restriction 9 DocUtils getAvailabilityRestricti
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • 在 Jetpack Compose 中启动动画矢量 Drawable

    我有一个动画矢量可绘制R drawable my anim 我想在 Jetpack Compose 中展示并开始 可绘制对象显示 渲染正确 但动画未启动 这是撰写视图 Composable fun SplashView Surface mo
  • ROOM迁移过程中如何处理索引信息

    CODE Entity tableName UserRepo indices Index value id unique true public class GitHubRepo PrimaryKey autoGenerate true p
  • MediaCodec 创建输入表面

    我想使用 MediaCodec 将 Surface 编码为 H 264 使用 API 18 有一种方法可以通过调用 createInputSurface 然后在该表面上绘图来对表面中的内容进行编码 我在 createInputSurface
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • 如何在不更改手机语言的情况下更改Android应用程序语言?

    我希望用户在应用程序内选择一种语言 选择语言后 我希望字符串使用特定语言 如果我更改手机语言 那么我的应用程序将以设置的语言运行 我无法找到任何在不更改手机语言的情况下设置语言的方法 此外 一旦设置了语言 更改就应该反映出来 有人可以建议一
  • 如何创建像谷歌位置历史记录一样的Android时间轴视图?

    我想设计像谷歌位置历史这样的用户界面 我必须为我正在使用的应用程序复制此 UIRecyclerView 每行都是水平的LinearLayout其中包含右侧的图标 线条和视图 该线是一个FrameLayout具有圆形背景和半透明圆圈Views
  • 应用程序关闭时的倒计时问题

    我制作了一个 CountDownTimer 代码 我希望 CountDownTimer 在完成时重新启动 即使应用程序已关闭 但它仅在应用程序正在运行或重新启动应用程序时重新启动 因此 如果我在倒计时为 00 10 分钟 秒 时关闭应用程序
  • SharedFlow 和 StateFlow 的主要区别

    两者有什么区别共享流 and 状态流 以及如何使用这些MVI建筑学 使用简单更好吗Flow或者这些作为状态和事件 Flow 是冷的 意味着它仅在收集数据时才发出数据 另外Flow不能保存数据 可以把它看成是水在里面流动的管道 Flow中的数
  • Android 如何聚焦当前位置

    您好 我有一个 Android 应用程序 可以在谷歌地图上找到您的位置 但是当我启动该应用程序时 它从非洲开始 而不是在我当前的城市 国家 位置等 我已经在developer android com上检查了信息与位置问题有关 但问题仍然存在
  • 使用 Espresso 检查 EditText 的字体大小、高度和宽度

    如何使用 Espresso 检查 EditText 的字体大小 高度和宽度 目前要分割我使用的文本 onView withId R id editText1 perform clearText typeText Amr 并阅读文本 onVi
  • 在 Android 中,如何将字符串从 Activity 传递到 Service?

    任何人都可以告诉如何将字符串或整数从活动传递到服务 我试图传递一个整数 setpossition 4 但它不需要 启动时总是需要 0 Service 我不知道为什么我不能通过使用 Service 实例从 Activity 进行操作 publ

随机推荐

  • Google Document AI API OCR 响应中的空页面数组

    我目前正在使用 Google Document AI API 通过 OCR 从 PDF 中提取文本 但是 我注意到 OCR 响应中的页面数组始终为空 即使 OCR 操作成功完成并且我能够从文档中检索文本 这是我正在使用的代码的简化版本 fr
  • Mercurial 樱桃采摘更改提交

    比如说 我对代码做了很多更改 并且只需要提交其中的一些更改 Mercurial 有没有办法做到这一点 我知道darcs有这样一个功能 I know hg transplant可以在分支之间执行此操作 但我需要类似的东西来在当前分支中提交代码
  • jQuery Ajax 调用 - 成功时设置变量值[重复]

    这个问题在这里已经有答案了 我正在编写一个应用程序 用于修改服务器中缓存对象的数据 这些修改是通过 ajax 调用执行的 该调用基本上更新该对象的属性 当用户完成工作时 我有一个基本的 保存更改 按钮 允许他们保存数据并刷新缓存的对象 为了
  • Indy HTTP:读取 403 响应内容

    我在使用 Indy HTTP 在 Delphi 中 和 Google Contacts API 时遇到问题 请参阅下页 客户端登录响应 部分 http code google com apis accounts docs AuthForIn
  • 尝试运行 Selenium Webdriver (WebdriverJS) 的示例测试时出现错误

    我正在尝试在文件中运行示例测试google search test js位于 node modules selenium webdriver example 我正在使用 WebdriverJS 并且只安装了selenium webdrive
  • 使用 java 解析器删除 XML 节点

    在下面的示例 XML 中 如果 E 13 如何使用 java 解析器删除整个 B 节点
  • 在 NSLayoutManager 中使用boundingRectForGlyphRange计算字边界时如何消除前导空格

    我正在 iOS 上将多行字符串分解为单词边界 我的解决方案以 NSLayoutManager 的boundingRectForGlyphRange 方法为中心 它几乎可以工作 只是每个单词的矩形向右偏移了几个像素 换句话说 NSLayout
  • 单用户的 Git 工作流程

    我是一家开发少量桌面应用程序和网站的单身商店 几个月前我开始使用 GIT 进行版本控制 我对它相当满意 但我的使用非常笨拙 我想知道单个用户的工作流程应该是什么 现在 我的每个项目文件夹中都有一个 git 文件夹 我每隔一段时间就提交一次更
  • React 中没有构造函数的初始化状态

    import React Component from react class Counter extends Component state value 0 increment gt this setState prevState gt
  • 将网页抓取的结果存储到数据库中

    我已经使用 python 编写了一段用于网页抓取的代码 该代码使用 selenium 从亚马逊提取 Macbook 的数据 现在我想将这些值存储在 Excel 或 MySql 中 特定产品行中有各种 html css 类和一个包含产品所有参
  • 用户'User'@'%'和'User'@'localhost'不一样吗?

    我根据第一个命令创建了一个用户 但无法通过本地主机 linux 登录 这个链接mysqldoc http forums mysql com read php 101 304823 305463 msg 305463指示我需要创建第二个同名用
  • Ubuntu 10 Ruby 1.9 Rails 3:没有这样的文件或目录

    我已经为此苦苦挣扎有一段时间了 我在装有 ruby 的开发机器上运行 Ubuntu 101 8在它上面 我removed I 安装了红宝石1 9 3和rails3使用RVM和这个教程http ryanbigg com 2010 12 ubu
  • Eclipse Luna 快速搜索命令

    The Quick Search Command seems to have disappeared in Luna In Keplar this was bound by default to Ctrl Shift L In Luna C
  • 如何增加在 Windows 7 下运行的 Apache 的堆栈大小?

    我认为在 Windows 7 下的 Apache 服务器上运行 cakePHP 应用程序时出现堆栈溢出 此问题在 Windows 平台上更常见 因为 Apache 的默认堆栈大小较小 Windows 上的默认堆栈大小为 1 MB 而 Uni
  • 检查标记是否在圆半径内

    我想知道给定的标记是否在圆半径内 在 javascript 中 我可以做类似的事情 google maps geometry spherical computeDistanceBetween latLngCircleCenter latLn
  • Mercurial 克隆问题

    我正在使用 Mercurial 并且在本地克隆了一个存储库hg push 我得到这个 abort cannot lock static http repository 这是什么意思 为什么它不能锁定 static http 存储库 文件夹权
  • 从 pandas 数据框的列或行获取列表?

    我有一个数据框df从 Excel 文档导入 如下所示 cluster load date budget actual fixed price A 1 1 2014 1000 4000 Y A 2 1 2014 12000 10000 Y A
  • 为什么编译器这么蠢?

    我总是想知道为什么编译器无法弄清楚人眼显而易见的简单事物 他们做了很多简单的优化 但从来没有做过哪怕一点点复杂的优化 例如 此代码在我的计算机上大约需要 6 秒才能打印值零 使用 java 1 6 int x 0 for int i 0 i
  • mysql中如何将varbinary转换为char/varchar

    我有一个 varbinary 字段 它已经被填充了 现在我如何将 varbinary 转换为 varchar 以便我可以将字段中的数据用于其他目的 我使用MySQL版本5 10 迟到的答复 您可以使用 CAST 或 CONVERT 因此 C
  • 如何创建一个字母滚动条显示android中的所有字母?

    My purpose is to obtain something like that 但我能找到的唯一例子是这样的列表 android 列表视图快速滚动与字母表就像 iPhone 联系人活动 https stackoverflow com