【问题标题】:Flat button with background, or transparent background but with border带背景的扁平按钮,或带边框的透明背景
【发布时间】:2018-05-11 15:29:56
【问题描述】:

我不是原生 Android 开发者,但正在通过修改 react-native 原生包来学习。

我试图使用本机 Button 组件并以编程方式进行更改,使其看起来像“卸载”的 Play 商店按钮,它是透明背景和边框。还有坚固的“打开”按钮。我只能通过以下方式使其“无边界”:

super(context, null, android.R.attr.borderlessButtonStyle)

或定期提出:

super(context)

这是 Play 商店按钮的屏幕截图,有谁知道如何以编程方式制作这些按钮。包括以编程方式切换android.R.attr.borderlessButtonStyle

【问题讨论】:

  • 您需要为此创建一个 xml 可绘制对象,并将其设置为背景。 stackoverflow.com/questions/7690416/…
  • 你在 5 分钟内两次问了同一个问题...
  • @H.Brooks 这是一个关于在构造函数中访问 c​​onfigMap 的反应原生问题,我以这种情况为例。

标签: android


【解决方案1】:

您需要制作自己的可绘制对象。这是一个例子。 不要使用这个,只是复制和修改,因为它不是你要求的样式,它只是一个例子。

   <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape>
            <solid
                android:color="#000000" />
            <stroke
                android:width="1dp"
                android:color="#ffffff" />
            <corners
                android:radius="4dp" />
            <padding
                android:left="6dp"
                android:top="6dp"
                android:right="6dp"
                android:bottom="6dp" />
        </shape>
    </item>
    <item>
        <shape>
            <solid
                android:color="#90aabbcc" />
            <stroke
                android:width="1dp"
                android:color="#ffffff" />
            <corners
                android:radius="4dp" />
            <padding
                android:left="6dp"
                android:top="6dp"
                android:right="6dp"
                android:bottom="6dp" />
        </shape>
    </item>
</selector>

当然,您是否拥有颜色、自己的边框或无边框以及圆角半径,您就完成了。

【讨论】:

  • 谢谢,+1,但这不是程序化的,尽管我希望创建一个 AppCompat 按钮并将色调更改为颜色。我对以编程方式切换 android.R.attr.borderlessButtonStyle 尤其感兴趣。
  • 好吧,要切换按钮的外观,您可以使用上面的选择器,以便它根据交互事件进行更改,这就是您要求做的,或者您可以有两个按钮彼此重叠并在两者之间切换可见性,共享相同的单击,或者您可以在代码中调整按钮的属性,如背景可绘制,或者您可以制作一个扩展按钮的自定义按钮并向其添加切换属性。有很多方法可以给猫换皮,但是您不能在运行时“专门”更改 xml 样式属性。但你可以做任何其他的选择
  • 谢谢山姆,我正在努力解决这个问题,但我认为这是正确的方向。我会继续努力并与您分享成功的秘诀。 :) 如果你有任何输入,如果你能分享,那就太棒了,这里的这个模块在运行时创建它没有 xml - github.com/adbayb/react-native-android-kit/blob/master/android/… - 我试图修改这个模块以支持无边界和无边界。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 2016-02-20
  • 1970-01-01
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多