这是一个如何ListView使用divider和dividerHeight参数在类中执行的示例:
<ListView
android:id="@+id/activity_home_list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@android:color/transparent"
android:dividerHeight="8dp"/>
Run Code Online (Sandbox Code Playgroud)
但是,我没有在RecyclerView课堂上看到这种可能性.
<android.support.v7.widget.RecyclerView
android:id="@+id/activity_home_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"/>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,可以直接定义边距和/或将自定义分隔视图添加到列表项的布局中,还是有更好的方法来实现我的目标?
我创建了两个具有唯一ID的组(我需要一个分隔符),它们都checkableBehavior设置为单一.这允许同时检查来自不同组的多个项目,这正是我想要避免的.我想在所有群组中最多检查一件商品.
由于我还没有找到任何方法在XML中执行此操作,我尝试实现一个简单的逻辑onNavigationItemSelected来取消选中上一个菜单项:
if (previousItem != null)
previousItem.setChecked(false);
currentItem.setChecked(true);
Run Code Online (Sandbox Code Playgroud)
但setChecked(false)方法从来没有对我有用 - 项目保持检查.
这是我的示例代码:
menu_navigation.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group
android:id="@+id/nav_group_1"
android:checkableBehavior="single">
<item
android:id="@+id/nav_feed"
android:title="@string/feed"/>
<item
android:id="@+id/nav_people"
android:title="@string/people"/>
</group>
<group
android:id="@+id/nav_group_2"
android:checkableBehavior="single">
<item
android:id="@+id/nav_settings"
android:title="@string/settings"/>
<item
android:id="@+id/nav_help_feedback"
android:title="@string/help_feedback"/>
<item
android:id="@+id/nav_logout"
android:title="@string/logout"/>
</group>
Run Code Online (Sandbox Code Playgroud)
NavigationItemSelectedListener:
mUiNavigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
if (previousItem != null)
previousItem.setChecked(false);
currentItem.setChecked(true);
//...
changeCurrentFragment(...);
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
我需要一个提示!谢谢.
android android-support-library navigation-drawer material-design navigationview
我还是RxJava的新手,我在Android应用程序中使用它.我已经阅读了关于这个主题的公吨,但仍然觉得我错过了一些东西.
我有以下场景:
我有数据存储在系统中,可通过各种服务连接(AIDL)访问,我需要从该系统中检索数据(可能会发生1-n次异步调用).Rx帮助我简化了这段代码.但是,整个过程往往需要几秒钟(超过5秒+),因此我需要缓存此数据以加速本机应用程序.
此时的要求是:
初始订阅时,缓存将为空,因此我们必须等待所需的加载时间.没什么大不了.之后,应该缓存数据.
后续加载应该从缓存中提取数据,但是应该重新加载数据并且磁盘缓存应该在幕后.
问题:我有两个Observable - A和B. A包含从本地服务中提取数据的嵌套Observable(这里有吨).B更简单.B只包含从磁盘缓存中提取数据的代码.
需要解决:a)返回缓存项(如果已缓存)并继续重新加载磁盘缓存.b)缓存为空,从系统加载数据,缓存并返回.后续调用将返回"a".
我有几个人推荐一些操作,如flatmap,merge甚至主题,但由于某种原因,我无法连接点.
我怎样才能做到这一点?
由于Android 6 Marshmallow最近有关权限的更改,以下代码不再有效并引发异常.
Settings.System.putInt(getContentResolver(), "vibrate_when_ringing", 0);
Run Code Online (Sandbox Code Playgroud)
即使在向WRITE_SETTINGS应用授予权限后,也会发生这种情况:
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
Uri uri = Uri.fromParts("package", getActivity().getPackageName(), null);
intent.setData(uri);
startActivityForResult(intent, WRITE_SETTINGS_PERMISSION_REQUEST_CODE);
//at this point Settings activity is opened and user is prompted for permission
...
if (Settings.System.canWrite(this)) { //now returns true, because permissions were granted
Settings.System.putInt(getContentResolver(), "vibrate_when_ringing", 0); //still crashes
} else {
Log.w(LOG_TAG, "No permission to write settings.");
}
Run Code Online (Sandbox Code Playgroud)
如何在Android 6中更改铃声振动设置(以及类似的安全设置)?
完整堆栈跟踪:
10-12 02:26:37.728 1927-2765/? E/DatabaseUtils: Writing exception to parcel
10-12 02:26:37.728 1927-2765/? E/DatabaseUtils: java.lang.IllegalArgumentException: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用三星Gear Live手表的心率监测器.这款手表配有4.4.4手机,工作正常.我正在关注官方的BasicSensorsApi示例.
我可以使用以下范围成功连接到Google Play服务:
addScope(new Scope(Scopes.FITNESS_LOCATION_READ_WRITE))
.addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
.addScope(new Scope(Scopes.FITNESS_BODY_READ_WRITE))
Run Code Online (Sandbox Code Playgroud)
但是,当我想列出所有可用的心率监测器时,我收到一个空列表DataSource:
private void findFitnessDataSources() {
Fitness.SensorsApi.findDataSources(mGoogleApiClient, new DataSourcesRequest.Builder()
.setDataTypes(
DataType.TYPE_HEART_RATE_BPM)// At least one datatype must be specified.
.setDataSourceTypes(
DataSource.TYPE_RAW)// Specify whether data type is raw or derived.
.build())
.setResultCallback(new ResultCallback<DataSourcesResult>() {
@Override
public void onResult(DataSourcesResult dataSourcesResult) {
for (DataSource dataSource : dataSourcesResult.getDataSources()) {
if (dataSource.getDataType().equals(DataType.TYPE_HEART_RATE_BPM)
&& mListener == null) {
registerFitnessDataListener(dataSource,
DataType.TYPE_HEART_RATE_BPM);
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
DataType例如,如果我更改为,TYPE_STEP_COUNT_CUMULATIVE或者TYPE_LOCATION_SAMPLE,列表将包含我的手机,这似乎是合乎逻辑的.
为什么手表没有被列为可用DataSource呢?
请注意:这不是重复: …
使用vnd.google.fitness.VIEWaction和vnd.google.fitness.data_type/com.google.heart_rate.bpmmime类型创建intent的所有现有语音命令的列表是什么?
但我发现了更多,例如:
由于Crashlytics不能在开箱即用的可穿戴应用程序上运行,我正在寻找一种拦截和报告运行时抛出的任何潜在异常的最佳方法.我想知道为什么他们没有被自动报告给Google Play开发者控制台?
谷歌已经宣布未来的Android Wear更新将内置Wi-Fi支持,但即便如此,并非所有设备都将配备足够的硬件.
在这种情况下,我最初的想法是创建一个子类Application并实现它Thread.UncaughtExceptionHandler.然后,每个例外都必须编组并发送到手机,使用MessageApi.WearableListenerService手机上的扩展将收到一条消息,解组异常并将其传递给Crashlytics.
但是,这提出了一些问题.可穿戴设备和手机之间的蓝牙连接存在中断风险,因此所有错误都应排队并存储在可穿戴设备的文件系统中.
对于简单的崩溃报告来说,这似乎有些过分.有更简单的方法吗?
我有一段文字:
randomtext 1150,25 USD随机文本
和一个简单的正则表达式来提取不同货币的金额:
(((\d+)(,?\s?|.)(\d{1,2}))\s?(PLN|EUR|USD|CHF|GBP))
这给了我这些团体:
但是,数字和货币可能会交换其头寸:
randomtext USD 1150,25随机文字
要么
randomtext USD1150,25 randomtext
在保持当前分组的同时,如何在不重复整个组(AB | BA)的情况下提高我的正则表达式以满足该条件?
我有两个正在运行的移动服务,这些服务是在manage.windowsazure.com上使用当前门户创建的.我目前正在portal.azure.com上测试新版本,我发现我的移动服务(现在可能被称为移动应用程序)以及他们的通知中心丢失了.其他服务,如SQL服务器,数据库和Web应用程序都在那里.
如何在新门户中管理我的移动服务?
android ×7
wear-os ×3
google-fit ×2
aidl ×1
azure ×1
caching ×1
crashlytics ×1
divider ×1
google-now ×1
heartbeat ×1
java ×1
regex ×1
rx-java ×1