Titanium - Android meterial不同颜色的按钮

时间:2016-06-23 09:04:03

标签: appcelerator appcelerator-titanium

我试图为我的Android应用提供实质性视图。我已经按照指南进行了操作:

http://docs.appcelerator.com/platform/latest/#!/guide/Android_Themes

http://www.appcelerator.com/blog/2015/07/understanding-the-android-material-theme/

如果我放置一个按钮,它就会被物化"。它具有默认颜色,并在单击时显示动画。

但我想要的是屏幕上有几个按钮 - 每个按钮都有不同的颜色。但我仍然希望将它们作为素材按钮 - 但是一旦我给它们backgroundColor它们只是一个普通的按钮 - 没有任何关于它们的物质化。

我可以更改素材视图中项目的颜色,还是我只能使用主题中定义的内容?

修改

只是为了澄清 - 我希望在屏幕上有几个按钮 - 每个按钮都有自己的颜色 - 作为材料设计按钮(包括动画和材质外观)。

编辑2

我在Appcelerator jira(https://jira.appcelerator.org/browse/AC-560)上发现了类似的问题,其中appcelerator声明它不是错误 - 而是本机行为。

所以我正在修改我的问题 - 我可以像对待本机一样设置每个控件的自定义Android样式吗?

1 个答案:

答案 0 :(得分:0)

在回复您的上一条评论时,这是我如何为我的按钮进行解决方法,我还有其他按钮功能,如无效,启用,按下,设置标题等...

button.xml

<Alloy>
    <View id="button">
        <Label id="title"/>
        <ImageView id="icon"/>
    </View>
</Alloy>

button.js(例如)

var args = arguments[0] || {},
    data = {};

$.title.text = args.title;

$.icon.image = '/images/button/'+args.image+'.png';

data.select = function(status) {

    if($) {

        if($.button) $.button.backgroundColor = status ? '#fff' : Alloy.CFG.myHoverColor;

        if($.icon) $.icon.image = '/images/button/'+args.image+'_hover.png';
    }
};

data.click = function() {

    data.select(true);

    setTimeout(function() {

        if($ && $.button && data && data.select) data.select(false);
    },1000);
};

$.button.addEventListener('click',data.click);

$.button.cleanup = function() {

    $.destroy();

    $.off();

    $.button.addEventListener('click',data.click);  

    $ = data = args = null;
};

评论中使用的链接:

Alloy Themes

RippleEffect