Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为android无边框按钮添加样式(android 4.0+;)_Android_Android Layout_Button_Styles_Android Xml - Fatal编程技术网

为android无边框按钮添加样式(android 4.0+;)

为android无边框按钮添加样式(android 4.0+;),android,android-layout,button,styles,android-xml,Android,Android Layout,Button,Styles,Android Xml,我想向无边框按钮添加边框。但是,如果我使用父无边框按钮创建自己的样式,并覆盖背景标记,则会丢失状态更改动画等,因为这也是由背景定义的。我也不能自己实现它们,因为原生android drawables不能作为公共资源使用,因此无法访问。我不想复制可提取的内容。 是否只能通过编程方式覆盖ondraw,还是缺少基于xml的解决方案? (顺便说一句,这是一个周期表,所以这不应该包括每个按钮都有一个xml文件,因为大约有100个按钮) 谢谢 stephan这其中大部分来自 有一个4步的过程来做这样的事情:

我想向无边框按钮添加边框。但是,如果我使用父无边框按钮创建自己的样式,并覆盖背景标记,则会丢失状态更改动画等,因为这也是由背景定义的。我也不能自己实现它们,因为原生android drawables不能作为公共资源使用,因此无法访问。我不想复制可提取的内容。 是否只能通过编程方式覆盖ondraw,还是缺少基于xml的解决方案? (顺便说一句,这是一个周期表,所以这不应该包括每个按钮都有一个xml文件,因为大约有100个按钮) 谢谢
stephan

这其中大部分来自

有一个4步的过程来做这样的事情:

  • 创建包含状态的XML文件
  • 为每个州创建一个XML文件(或背景)
  • 创建按钮的样式
  • 将按钮添加到布局中,然后查看它的外观
  • 最困难的事情是第一步,所以我将在这里展示这一步。对于其他人,你可以访问该网站或做自己的事情。本质上,它看起来是这样的。基本上需要捕获所有4个状态。该文件应保存在drawable文件夹中,应用程序将使用该文件的名称作为drawable文件的名称

    <?xml version="1.0" encoding="utf-8"?>
    
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:state_enabled="false"
            android:drawable="@drawable/loc_for_button_disabled" />
        <item
            android:state_pressed="true"
            android:state_enabled="true"
            android:drawable="@drawable/loc_for_button_pressed" />
        <item
            android:state_focused="true"
            android:state_enabled="true"
            android:drawable="@drawable/loc_for_button_focused" />
        <item
            android:state_enabled="true"
            android:drawable="@drawable/loc_for_button_enabled" />
    </selector>
    

    一个简单的方法是将您的按钮放置在一个单独的布局中,例如
    线性布局
    ,并为该布局提供背景色和填充,例如1dp。这将在按钮周围呈现“边框”。注意,这在布局方面是相当昂贵的,所以当你有很多按钮时不要使用这种方法


    正确的解决方案是为所有州创建一个可绘制列表,并使用可绘制列表构建一个可绘制状态列表,并将此可绘制状态列表指定为按钮的背景。事实上,这并不是很多工作,只要看看

    如果它是周期表,那么也许你应该使用网格视图。它支持项目之间的行。原始图像可以通过SDK保存。您需要一个具有正确结构的xml文件,Android可以从中获取正确状态的图片。