Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.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中的自定义按钮:从xml读取背景时如何获取边框/边缘/框架?_Android - Fatal编程技术网

Android中的自定义按钮:从xml读取背景时如何获取边框/边缘/框架?

Android中的自定义按钮:从xml读取背景时如何获取边框/边缘/框架?,android,Android,使用xml中的Android形状,我定义了一个渐变,用作按钮的背景 这一切都很好,但按钮周围没有边缘。我希望它看起来像普通的Android按钮,但我需要更多的灵活性来控制颜色和外观 形状定义如下: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">

使用xml中的Android形状,我定义了一个渐变,用作按钮的背景

这一切都很好,但按钮周围没有边缘。我希望它看起来像普通的Android按钮,但我需要更多的灵活性来控制颜色和外观

形状定义如下:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient android:startColor="#FFFFFF" 
        android:endColor="#00FF00"
        android:angle="270" />
    <corners android:radius="3dp" />
    <stroke android:width="5px" color="#000000" />
</shape>

我希望在xml中设置边界。为什么“笔划”不能解决它?中风似乎没有任何作用。 我查看了Android开发者规范,但在那里找不到答案:

我还查看了Android按钮的所有属性,但正如预期的那样,没有这样的参数,可能是因为它内置于普通的Android按钮中。顺便说一句,我也检查了ImageButton属性

有人能帮忙吗? 我知道有另一种方法可以制作具有适当边缘的图像,并使用ImageButton,但实际上应该有一种方法可以通过编程来解决这个问题

谢谢!
安娜

我刚才有这个问题。虽然我不太记得我为什么做出每个决定,但我解决这个问题的方法是使用一个形状图层列表。这使您可以将一个形状堆叠在另一个形状上。例如,以下XML创建了一个2倍宽的实心黑色轮廓形状,中间有一个“灰色到白色到灰色”的渐变:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <padding android:left="1dp"
                android:top="1dp"
                android:right="1dp"
                android:bottom="1dp"/>
            <solid android:color="#FF000000"/>
            <corners android:radius="3dp"/>
        </shape>
    </item>

    <item>
        <shape>
            <padding android:left="2dp"
                android:top="2dp"
                android:right="2dp"
                android:bottom="2dp"/>
            <gradient android:startColor="#FFB0B0B0"
                android:centerColor="#FFFFFFFF"
                android:endColor="#FFB0B0B0"
                android:angle="315"/>
        </shape>
    </item>
</layer-list>

如果您希望能够在运行时动态更改该颜色,那么事情就会变得越来越混乱。同样,为什么我必须以某种方式做事情的细节还不清楚,但我最终不得不创建一个自定义视图类,其中包含一个自定义ShapeDrawable。我开始看SDK附带的ApiDemos应用程序中的示例——这是一个非常好的资源


编辑:你的笔划可能没有出现的另一个原因是你忘记了
android:
在color=“…”位之前。

可能太晚了,但你必须在颜色之前添加一个额外的ff

问候

使用图像按钮

   <ImageButton
        android:layout_width="40dp"
        android:layout_height="30dp"
        android:src="@drawable/left_arrow"
        android:background="@drawable/button_selector"
        android:gravity="center"/>

使用可绘制选择器创建图像按钮并定义属性



我也遇到了同样的问题,我观察到的是,在设计时,笔划没有应用到按钮作为边框,但在运行时,我看到了边框

我jst使用了以下相同的代码

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" android:padding="10dp">
    <solid android:color="@color/black" />
    <stroke  android:width="1px" android:color="@color/red" />

</shape>

正如史蒂夫·汉利(steve hanley)所说的那样,对于颜色属性,您错过了android:

希望这有助于某人……



添加
stroke color#56390a
将解决问题。

xml代码没有出现在我上面的问题中。有没有人能告诉我,是否有某些标记可以用来获取我见过的用于输入代码的stackoverflow框?(顺便说一句:要将HTML添加到帖子中,你必须将每行缩进4个空格,就像添加代码一样。如果没有,SO的文本解析器会变得混乱,并且不会显示HTML。)编辑:您的笔划可能没有出现的另一个原因是您忘记了在color=“…”位之前的android:。就这样!
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" android:padding="10dp">
    <solid android:color="@color/black" />
    <stroke  android:width="1px" android:color="@color/red" />

</shape>
<item android:state_enabled="false" android:drawable="@drawable/button_disabled" />

<item android:state_focused="true" android:drawable="@drawable/button_highlighted"/>
<item android:state_pressed="true" android:drawable="@drawable/button_highlighted"/>

<item>
    <shape>
        <gradient android:startColor="#fdfdfd" android:endColor="#f0f0f0" android:angle="270" />
        <stroke android:width="1dp" android:color="#56390a" />
        <corners android:radius="3dp" />
        <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" />
    </shape>
</item>