我正在尝试使用Android Studio在Microsoft Band 2上创建一个磁贴。我想知道是否可以将图像添加到按钮,就像我可以在Android手机上一样。我的另一个问题是关于复选框。乐队上有复选框吗?如果没有,是否有另一种获得类似功能的方法?我需要用户能够针对单个问题单击多个内容。任何帮助将不胜感激。
答案 0 :(得分:1)
对于复选框,我会做一个布局,其中布局中的较大文本按钮旁边有一个小文本按钮。单击大文本按钮时,从接收器调用更新功能,更改较小按钮的文本(可能是星号或其他看起来像子弹点的字符,它似乎出现和消失)。例如,您的更新功能可能如下所示(从SDK中给出的示例切片代码稍作修改):
private final int bulletTextId = 12;
private final int textButtonId = 21;
private boolean isActiveBullet = false;
private void onButtonClicked(int clickedID) {
switch (clickedID) {
case textButtonId:
String text = "";
isActiveBullet = !isActiveBullet;
if (isActiveBullet) text = "*";
try {
client.getTileManager().setPages(tileId,
new PageData(pageId1, 0)
.update(new TextBlockData(bulletTextId, text))
.update(new TextButtonData(textButtonId, "Text Button")));
} catch (BandIOException e) {e.printStackTrace();}
break;
default:
Log.e("", "Unknown button press received");
}
}
对于多个按钮,您可能需要一个按钮映射到布尔值并切换相应的按钮。如果你无法解决这个问题,请发表评论,然后我会跟进。
最初我认为改变背景颜色是有意义的,但似乎并没有得到sdk的支持。
至于使用图像作为背景,我不认为目前支持,只是通过查看sdk源代码中的函数定义,但我真的很想知道这也是肯定的。
编辑:发布后不久我发现了这个。看来你可以使用位图作为掩码,但我不知道该怎么做。希望有人会来并告诉我们,因为我也想知道:)
" 8.5.1 用作的图标 FilledButton 面具 通过定义一个充当掩码的Icon位图 然后 将该图标叠加在一个 FilledButton (看到 负 边距 ) ,您可以创建按下按钮时图标图像变为可见的效果。那就是 图标位图 被定义为 具有所需图像的透明像素和不透明像素els Ë 哪里 。当。。。的时候 用户按下 FilledButton , FilledButton 颜色变化 但 显示通过 只要 该 透明的部分 图标位图。 "
如果您需要,可以使用其他相关代码:
private PageLayout createButtonLayout() {
return new PageLayout(
new ScrollFlowPanel(15, 0, 260, 105, FlowPanelOrientation.HORIZONTAL)
.addElements(new TextBlock(0, 0, 20, 45, TextBlockFont.MEDIUM)
.setMargins(5, 0, 0, 0)
.setId(bulletTextId))
.addElements(new TextButton(0, 0, 190, 45).setMargins(5, 0, 0, 0)
.setId(textButtonId).setPressedColor(Color.BLUE))
);
}
private BroadcastReceiver messageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction() == TileEvent.ACTION_TILE_OPENED) {
} else if (intent.getAction() == TileEvent.ACTION_TILE_CLOSED) {
}
/* ***** THIS IS THE ONLY EVENT WE ACTUALLY CARE ABOUT ***** */
else if (intent.getAction() == TileEvent.ACTION_TILE_BUTTON_PRESSED) {
TileButtonEvent buttonData = intent.getParcelableExtra(TileEvent.TILE_EVENT_DATA);
appendToUI("button is " + isActiveBullet + " ");
onButtonClicked(buttonData.getElementID());
}
}
};