V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tctc4869
V2EX  ›  Android

android 开发中有那种能在按钮控件内放布局容器的按钮的控件库么?

  •  
  •   tctc4869 · 2021-03-09 09:26:02 +08:00 · 9004 次点击
    这是一个创建于 1390 天前的主题,其中的信息可能已经有所发展或是发生改变。

    android 开发里的原生按钮控件,不能像 windows 的 wpf 界面开发一样,直接在按钮( Button,radioButton,radioButton )里面放布局容器,然后再在这个布局容器里面进行配置,进而定制按钮。

    wpf 开发的按钮( Button,radioButton,radioButton ),本质上就是一个容器,在按钮容器里面放什么都可以,但又不影响用户对按钮本身的使用,用此方式轻松地对按钮外观进行定制。那有 android 第三方的控件库中,有没有这种容器按钮体系的控件库?

    举个例子,比如在 Button,RadioButton,RadioButton 内部显示两行不同内容的文字,并且两行文字的外观是不一样的,一行是红色,另一行是蓝色。

    在 wpf 里很轻松,直接在按钮内部放置布局容器,然后放两个显示文字的控件就可以。但是 android 开发要怎么做呢?

    自定义控件么?但我更想知道有没有已经实现的第三方控件库的方案

    11 条回复    2021-03-10 21:06:15 +08:00
    viator42
        1
    viator42  
       2021-03-09 09:32:30 +08:00
    如果是 flutter 的话就能做到,Android 原生只能变通着解决,用 Layout 代替 Button
    Tenma
        2
    Tenma  
       2021-03-09 09:32:30 +08:00
    Android 实现方式肯定不能和 WPF 一样啊,但是它本质上每个空间都是 View,所以你不需要用 Button,用 Layout 之类一样的,最后给他加个点击事件的监听即可。
    tctc4869
        3
    tctc4869  
    OP
       2021-03-09 09:37:05 +08:00
    @viator42
    @Tenma
    我知道 android 只能用 layout 变通实现,不过这个有成熟的实现方案,也就是控件库?
    yolee599
        4
    yolee599  
       2021-03-09 09:37:49 +08:00
    新建一个类继承,覆盖原有的绘制方法
    john6lq
        5
    john6lq  
       2021-03-09 09:41:56 +08:00 via iPhone
    ilotuo
        6
    ilotuo  
       2021-03-09 10:05:04 +08:00
    仅针对例子, SpannableString 可解?
    lwlizhe
        7
    lwlizhe  
       2021-03-09 10:11:09 +08:00
    一般来说,都是自定义吧~
    控件库远远满足不了设计骚动的心~~
    dreamist
        8
    dreamist  
       2021-03-09 11:31:40 +08:00
    题主具的这个例子,正确的做法是 Button + SpannableString 实现。其他复杂的情况,Button 本身是不支持的。在 Android 里面其实是严格区分 ViewGroup 和 View 的,能够装下其他布局的,得是一个 ViewGroup 。
    tctc4869
        9
    tctc4869  
    OP
       2021-03-09 14:08:30 +08:00
    @dreamist 那有继承于 ViewGroup 抽象类下的容器按钮的控件库么
    HangoX
        10
    HangoX  
       2021-03-09 16:41:12 +08:00
    android 原生只能用 Layout 自定义实现,用新的 JetpackCompose 可以实现
    dreamist
        11
    dreamist  
       2021-03-10 21:06:15 +08:00
    @tctc4869 这个不清楚了,一般都是自定义一个 ViewGroup 实现就行了,实现起来也不难。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2694 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 12:15 · PVG 20:15 · LAX 04:15 · JFK 07:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.