小编BoD*_*BoD的帖子

Lollipop的backgroundTint对Button没有影响

我的活动中有一个Button,我希望它有我主题的强调色.而不是像我们必须做的那样制作我自己的可绘制的Lollipop,我自然会想要使用新backgroundTint属性.

<Button
    android:id="@+id/btnAddCode"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:backgroundTint="@color/accent"
    android:text="@string/addressInfo_edit_addCode" />
Run Code Online (Sandbox Code Playgroud)

不幸的是它没有效果,按钮保持灰色.

我尝试了不同的值backgroundTintMode,但没有改变任何东西.

我也尝试在我的Activity中以编程方式进行,它没有改变任何东西.

addCodeView.findViewById(R.id.btnAddCode).setBackgroundTintList(
     getResources().getColorStateList(R.color.accent));
Run Code Online (Sandbox Code Playgroud)

为什么我的色彩被忽略了?

编辑:只是为了澄清,我确实在Lollipop设备上进行测试.其他小部件(例如EditText)正确并自动着色.

android tint android-layout

79
推荐指数
8
解决办法
7万
查看次数

如何重置BehaviorSubject

我有一个BehaviorSubject我想要重置 - 我的意思是我希望最新值不可用,就像它刚刚创建一样.

我似乎没有看到一个API来做这个,但我想有另一种方法来实现相同的结果?

我希望的行为是我需要发出事件,并且我希望订阅者在他们订阅时获得最新事件 - 如果特定经理处于"已启动"状态.但是当这个经理被"停止"时,最新的事件应该不可用(就像它从未在第一时间开始一样).

stream reactive-programming rx-java rx-java2

18
推荐指数
2
解决办法
2万
查看次数

IntelliJ,Java格式化:强制空块在一行上

在格式化Java文件时,是否可以告诉IntelliJ将空块放在一行上.

我喜欢这个:

@Override
public void onClickPositive(int tag, Object payload) {
}
Run Code Online (Sandbox Code Playgroud)

要自动成为:

@Override
public void onClickPositive(int tag, Object payload) {}
Run Code Online (Sandbox Code Playgroud)

intellij-idea

13
推荐指数
2
解决办法
3228
查看次数

是否可以使用Uri.Builder而没有"//"部分?

我正在尝试mailto:使用GMail应用程序构建一个uri来发送邮件.我想使用android.net.Uri.Builder该类来执行此操作,但是生成的uri是在表单中mailto://test@example.com,这使得GMail应用程序认为收件人是//test@example.com,而不仅仅是test@example.com.

我最终这样做了:

String uriStr = uriBuilder.toString();
uriStr = uriStr.replaceAll("//", "");
final Uri uri = Uri.parse(uriStr);
Run Code Online (Sandbox Code Playgroud)

但显然,这是一个丑陋的黑客......

没有这个//部分,没有办法建立uri 吗?

android uri

9
推荐指数
2
解决办法
4148
查看次数

OkHttp 3和HttpURLConnection

我对如何将OkHttp升级到v3.0.0同时保留我们使用的代码感到困惑HttpURLConnection.我们当前的依赖是:

compile 'com.squareup.okhttp:okhttp:2.7.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.7.0'
Run Code Online (Sandbox Code Playgroud)

更改日志指出:

不推荐使用Apache HTTP客户端和HttpURLConnection API.它们一如既往地继续工作,但我们正在将所有内容转移到新的OkHttp 3 API.okhttp-apache和okhttp-urlconnection模块应仅用于加速向OkHttp的请求/响应API的转换.这些已弃用的模块将在即将发布的OkHttp 3.x版本中删除.

不幸的是,我不清楚"我们将所有内容都移到新的OkHttp 3 API"意味着什么.

我试图依赖,com.squareup.okhttp:okhttp-urlconnection:3.0.0但那不存在.

我应该保持com.squareup.okhttp:okhttp-urlconnection:2.7.0并升级com.squareup.okhttp:okhttp到3.0.0吗?或者这句话是否意味着只依赖com.squareup.okhttp:okhttp应该工作?

android okhttp okhttp3

9
推荐指数
1
解决办法
8719
查看次数

改造:服务器返回ETag和Cache-Control:max-age = 60.如果请求<60s,是否应该使用缓存?

我正在使用Retrofit,配置为使用带缓存的OkHttp.我称之为api:https://api.github.com/users/bod/repos,它返回一个Etag和一个Cache-Control: public, max-age=60, s-maxage=60标题.

我在不到60秒的时间内发出两个请求,所以我希望第二个请求根本不执行任何网络并根据Cache-Control指令使用缓存.但那不是我所看到的.

我猜这是因为该Etag指令优先?

这是正确/正常/预期的行为吗?

android http-caching retrofit2 okhttp3

9
推荐指数
1
解决办法
662
查看次数

用于在Eclipse中显示方法名称和参数值的模板

有没有办法在Eclipse中生成一个模板(Java - > Editor - > Templates)来生成这样的东西

debug("methodName arg1=" + arg1 + " arg2=" + arg2 + " arg3=" + arg3);
Run Code Online (Sandbox Code Playgroud)

在方法中使用时.例如:

public void setImage(long rowId, long contactId, String thinggy) {
   // invoking the template here, produces this:
   debug("setImage rowId=" + rowId + " contactId=" + contactId + " thinggy=" + thinggy);
}
Run Code Online (Sandbox Code Playgroud)

我找不到使用标准模板UI的方法,也许有一个插件来做这种事情?

eclipse logging templates

8
推荐指数
3
解决办法
4983
查看次数

是否可以使用JavaScript从Flash applet拖放到外部?

假设我想要一个包含Flash小程序的网页,我想将一些对象拖放到网页的其他部分或者放到网页的其余部分,这是否可能?

如果你知道某个网站可以做到这一点,那就获得奖励!

javascript flash drag-and-drop

6
推荐指数
1
解决办法
2917
查看次数

是否可以在Android Wear上使用PreferenceFragmentCompat(并具有正确的样式)?

我有一个需要显示首选项的Wear应用程序,为此,我正在使用a PreferenceFragment,这可以正常工作.

现在为了使用Architecture组件,我正在迁移我的应用程序FragmentActivity而不是使用Activityappcompat Fragment而不是SDK.因此我必须使用PreferenceFragmentCompat而不是PreferenceFragment.

当我这样做时,我有非Android Wear样式,如截图所示.

之前/之后

如您所见,在右侧图像上,

  • 没有头衔
  • SwitchPreference无法按预期工作(没有小部件+省略号)
  • 有分隔符,不应该有任何分隔符
  • 顶部和底部没有足够的填充,因此裁剪了第一个和最后一个项目
  • 小部件和文本之间的边距太大

这甚至是可行的,还是我在浪费时间?

android android-appcompat preferencefragment wear-os

6
推荐指数
0
解决办法
190
查看次数

在 GraphQL 模式文档注释中,如何链接到类型?

GraphQL 模式中的注释采用 Markdown 格式,因此您可以在其中添加链接。我希望评论中的一种类型有一个指向另一种类型的链接,以便文档的读者可以从一种类型浏览到另一种类型。

例如,我尝试过这个:

"""
A written or printed work consisting of pages glued or sewn together along one side and bound in covers.
A book has an [Author](Author).
"""
type Book {
    id: ID
    name: String
    author: Author
}
Run Code Online (Sandbox Code Playgroud)

在 GraphiQL 中,这已正确转换为链接,但目的地错误。

恐怕这不太可能,但我想我还是会问!:)

documentation markdown graphql

6
推荐指数
1
解决办法
1246
查看次数

Android Wear:如何在可穿戴模块和手持模块之间共享代码?

我正在制作一款具有Wear功能的Android应用.

我想在可穿戴模块和手持模块之间共享一些代码.具体来说,我想分享使用Google Play服务类的通信代码,例如com.google.android.gms.common.api.GoogleApiClient.

显而易见的方法是使用一个模块(我称之为common)并在手持设备和可穿戴模块中添加一个依赖项.

由于这个通用模块使用Play服务,我需要依赖它com.google.android.gms:play-services.

我不知道该为版本号添加什么 - 这里的官方文档说要使用5.0.77,但这不起作用,因为最新的SDK在任何地方都没有这个版本,而是带有5.0.895.2.08.

如果我使用5.0.89,可穿戴应用程序不起作用,出现此错误:Google Play services out of date. Requires 5089000 but found 5077534.手表上的版本比我用来编译的版本旧.

而不是依赖于com.google.android.gms:play-services公共模块可能依赖于com.google.android.gms:play-services-wearable但是然后在构建时存在冲突,因为手持模块依赖于com.google.android.gms:play-services,并且这两个人工制品使用相同的包名称(com.google.android.gms),因此gradle构建失败.

解决方案是什么?

.

在讨论之后编辑并使我的问题更清楚.

为了能够在我的common模块中使用通信API,我有两个选择:

  1. 使common依赖于com.google.android.gms:play-services
  2. 使common依赖于com.google.android.gms:play-services-wear

⇒解决方案1不起作用,因为用于开发的可用版本(5.0.89)比手表上的版本(5.0.77)更新.

⇒解决方案2不起作用,因为handheld模块已经依赖com.google.android.gms:play-services,与之冲突com.google.android.gms:play-services-wear.

android android-gradle-plugin wear-os

5
推荐指数
1
解决办法
2335
查看次数

即时应用无法直接启动,首先显示屏幕

我已经成功发布了一个链接到我个人网站的(非常简单的)即时应用程序.

当我点击我网站的链接时,我希望该应用程序可以直接启动,但我首先看到一个带有2个按钮的屏幕:"打开应用程序"和"在浏览器中打开":

屏幕

为什么?

我尝试的其他即时应用程序不会显示此屏幕并直接打开应用程序(所需的行为).

android android-instant-apps

5
推荐指数
1
解决办法
788
查看次数

RxJava:并行执行Single列表,并以相同的顺序将结果放入列表中

我有一个网络调用列表(他们返回一个Single<Item>),我想并行执行它们.一旦所有的呼叫成功,我想得到一个List<Item>,按照与之相同的顺序List<Single<Item>>.

我已经设法做到并且它有效,但它似乎有点太复杂,我猜我必须有一个更简单的方法,因为这似乎是一个非常常见的用例?

这是我做的:

    List<Single<Pair<Item, Integer>>> itemSingles = new ArrayList<>();
    for (int index = 0; index < itemCount - 1; index++) {
        int finalIndex = index;
        itemSingles.add(
                fetchItem(...)
                .map(item -> new Pair<>(item, finalIndex))
        );
    }

    Single.merge(itemSingles)
            .sorted((o1, o2) -> o1.second.compareTo(o2.second))
            .map(itemPair -> itemPair.first)
            .toList()
            .subscribe(items -> { ... });
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我必须使用它Pair<Item, Integer>来绑定每个项目的位置,然后我可以使用该位置进行排序.

有更简单的方法吗?

rx-java rx-java2

5
推荐指数
1
解决办法
983
查看次数