【问题标题】:Button doesn´t remember shape按钮不记得形状
【发布时间】:2014-07-21 18:34:57
【问题描述】:

我创建了一个圆形(小)按钮,它在点击时改变它的颜色。 单击按钮时,颜色会从红粉色渐变色变为红色。

我的问题是,当颜色改变时,按钮不会保持圆形。

如果有人可以帮助我,那就太棒了。 :)

这是按钮形状和颜色的 XML 文件,在 drawable-folder 中创建,名称 = ne.xml:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >
    <gradient android:startColor="#FFFF0000" android:endColor="#80FF00FF"
        android:angle="270"/>
</shape>

这是我的代码:

import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;


public class MainActivity extends ActionBarActivity {
    Button b;


@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b=(Button)findViewById(R.id.button3);
    b.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

                b.setBackgroundColor(Color.parseColor("#FF4444"));

        }
    });
}
}

提前致谢,

-AD :D

【问题讨论】:

    标签: android button colors shape


    【解决方案1】:

    将形状与selectors 结合用于您的任务。选择器基本上是按钮应根据其启用、单击和聚焦状态采取的形状列表。

    选择器通常在 XML 中定义,同样位于资源的 drawable 文件夹中。请参阅this 示例。

    您正在做的是模仿选择器功能,但远不清晰且难以维护(更不用说可重用性了)。

    编辑要回答您为什么会出现这种行为的问题,请查看setBackroundColor 的实现,对于View - 它会重置背景形状,替换您的初始形状形状。

    【讨论】:

    • 嗨,鲍里斯,它不能 100% 正常工作。问题是,按钮不会停留在新颜色中。我完全按照教程告诉我的做了,但是按钮只有在按下时才会改变它的颜色。
    • @ANDROID_DEV 请更明确地说明您的所作所为。您基本上需要定义两种形状 - 一种使用默认颜色,另一种使用按下颜色。在选择器的按下状态下使用第二个
    • @ANDROID_DEV 实际上,当我想到它时,选择器可能不是您真正需要的东西 - 我认为您需要保留新颜色。然而,android 也有变化的状态 drawable:transition drawable。教程链接:kirill-poletaev.blogspot.com/2013/02/…
    • 好的,我会试试的。谢谢:)
    • @ANDROID_DEV 我很高兴能帮上忙。请记住过渡可绘制对象和选择器,并在适当的时候使用它们。
    猜你喜欢
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多