我想在"折叠"工具栏中显示一些文本而不是标题.问题是文本可能包含多于1行.所以我需要使用自定义视图,但无法理解如何以适当的方式实现它.
另外,如何设置最小CollapsingToolbar高度,始终显示所有文本行,而不是将它们折叠为一个?
总之,我需要这样的东西:
1 - 开始位置和3 - 结束位置(达到此工具栏高度后不再崩溃).
android android-layout material-design android-collapsingtoolbarlayout
我正在探索firebase云功能,我正在尝试使用http请求发送通知.
问题是,即使我设法发送通知,请求总是超时.
这是我的剧本
/functions/index.jsconst functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.friendRequestNotification = functions.https.onRequest((req, res) => {
const senderId = req.query.senderId;
const recipientId = req.query.recipientId;
const getRecipientPromise = admin.database().ref(`/players/${recipientId}`).once('value');
const getSenderPromise = admin.database().ref(`/players/${senderId}`).once('value');
return Promise.all([getRecipientPromise, getSenderPromise]).then(results => {
const recipient = results[0];
const sender = results[1];
const recipientToken = recipient.child("notificationsInfo/fcmToken").val();
const notificationAuthorization = recipient.child("notificationsInfo/wantsToReceiveNotifications").val();
const recipientBadge = recipient.child("notificationsInfo/badgeNumber").val();
const senderUsername = sender.child("username").val();
const payload = {
notification: {
title: `FriendRequest`,
body: `You have a new friend request from …Run Code Online (Sandbox Code Playgroud) javascript node.js firebase google-cloud-functions firebase-cloud-messaging
我刚刚将gradle版本更新为
classpath 'com.android.tools.build:gradle:3.0.0-beta1'
Run Code Online (Sandbox Code Playgroud)
将android studio更新为3.0-beta1之后,我的gradle-wrapper是:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-rc-1-all.zip
Run Code Online (Sandbox Code Playgroud)
问题是,当我想要Gradle-sync项目时,我正面临这个奇怪的问题:
Error:Cause: java.lang.NullPointerException
at sun.nio.fs.UnixPath.normalizeAndCheck(UnixPath.java:77)
at sun.nio.fs.UnixPath.<init>(UnixPath.java:71)
at sun.nio.fs.UnixFileSystem.getPath(UnixFileSystem.java:281)
at java.nio.file.Paths.get(Paths.java:84)
at com.android.build.gradle.internal.scope.BuildOutput.getOutputPath(BuildOutput.java:222)
at com.android.build.gradle.internal.scope.BuildOutputs.lambda$load$2(BuildOutputs.java:243)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1376)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
at com.android.build.gradle.internal.scope.BuildOutputs.load(BuildOutputs.java:245)
at com.android.build.gradle.internal.scope.BuildOutputs.load(BuildOutputs.java:184)
at com.android.build.gradle.internal.scope.BuildOutputs.load(BuildOutputs.java:140)
at com.android.build.gradle.internal.ide.BuildOutputsSupplier.lambda$get$1(BuildOutputsSupplier.java:55)
at com.google.common.collect.ImmutableList.forEach(ImmutableList.java:397)
at com.android.build.gradle.internal.ide.BuildOutputsSupplier.get(BuildOutputsSupplier.java:50)
at com.android.build.gradle.internal.ide.BuildOutputsSupplier.get(BuildOutputsSupplier.java:35)
at com.android.build.gradle.internal.ide.AndroidArtifactImpl.getOutputs(AndroidArtifactImpl.java:134)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.tooling.internal.adapter.ProtocolToModelAdapter$ReflectionMethodInvoker.invoke(ProtocolToModelAdapter.java:592)
at org.gradle.tooling.internal.adapter.ProtocolToModelAdapter$AdaptingMethodInvoker.invoke(ProtocolToModelAdapter.java:397)
at org.gradle.tooling.internal.adapter.ProtocolToModelAdapter$PropertyCachingMethodInvoker.invoke(ProtocolToModelAdapter.java:625)
at org.gradle.tooling.internal.adapter.ProtocolToModelAdapter$SafeMethodInvoker.invoke(ProtocolToModelAdapter.java:647)
at org.gradle.tooling.internal.adapter.ProtocolToModelAdapter$SupportedPropertyInvoker.invoke(ProtocolToModelAdapter.java:670)
at org.gradle.tooling.internal.adapter.ProtocolToModelAdapter$InvocationHandlerImpl.invoke(ProtocolToModelAdapter.java:356)
at com.sun.proxy.$Proxy204.getOutputs(Unknown Source)
at com.android.tools.idea.gradle.project.model.ide.android.IdeAndroidArtifactImpl.<init>(IdeAndroidArtifactImpl.java:57)
at com.android.tools.idea.gradle.project.model.ide.android.IdeVariantImpl.lambda$new$1(IdeVariantImpl.java:63)
at …Run Code Online (Sandbox Code Playgroud) android gradlew android-studio build.gradle android-gradle-plugin
我正在尝试使用来自服务器的更新数据更新我的地图,但我无法弄清楚如何从地图中删除旧项目(标记和群集 - 使用ClusterManager)( - 在我看来,我只能在ClusterManager中添加.
我有BroadcastReceiver,当有新数据时它会获得意图.我正在尝试这样的事情:(但它在"... getMarkers().clear();"上给了我UnsupportedOperationException .
private BroadcastReceiver myRefrestMapBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "onReceive");
mClusterManager.clearItems();
mClusterManager.getMarkerCollection().getMarkers().clear();
mClusterManager.getClusterMarkerCollection().getMarkers().clear();
mClusterManager.addItems(LocationGetter.getReports());
}
};
Run Code Online (Sandbox Code Playgroud)
我添加的数据仅用于此功能.
java.util.Collection<Marker> userCollection = mClusterManager.getMarkerCollection().getMarkers();
ArrayList<Marker> userList = new ArrayList<Marker>(userCollection);
// now is userList empty
for(Marker marker: userList){
marker.remove();
}
java.util.Collection<Marker> userCollection2 = mClusterManager.getClusterMarkerCollection().getMarkers();
ArrayList<Marker> userList2 = new ArrayList<Marker>(userCollection2);
// now is userList2 empty
for(Marker marker: userList2){
marker.remove(); …Run Code Online (Sandbox Code Playgroud) 我正在使用应用程序,我需要与我的路由器通信.我需要从他的路由器下载一个文件local ip.如果路由器无法访问互联网,Android会尝试通过该文件下载该文件mobile network.
WiFi即使没有互联网访问,有没有办法强制Android使用?(它是Android的一项新功能,Marshmallow可以显示WiFi但使用移动网络).该文件不能WAN仅从中访问LAN.
我可以强制它,当我禁用移动网络或打开启用WiFi的飞行模式,但这不是一个选项.我需要以编程方式强制执行此特定下载.
我有一个Web应用程序,我们在其中添加lat和lng,在Web中它在地图中清楚地显示了行车路线.我已经使用json向android发送相同的详细信息,包括api,lat和经度.但在Android应用程序中,地图没有显示正确的路径.
这是我的地图活动
public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback {
private GoogleMap mMap;
LatLng latLng;
private SharedPreferenceHelper sharedPreferenceHelper;
private static final int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
MyAlertDialogFragment newFragment;
public final String BEFORE_BUS_POSTION = "BEFORE_BUS_POSTION";
public final String AFTER_BUS_POSTION = "AFTER_BUS_POSTION";
public final String CURRENT_BUS_POSTION = "CURRENT_BUS_POSTION";
public final String GREEN_COLOR_CODE = "#228b22";
public final String ORANGE_COLOR_CODE = "#C56E00";
private String[] mNavigationDrawerItemTitles;
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
Toolbar toolbar;
private CharSequence mDrawerTitle;
private CharSequence mTitle;
android.support.v7.app.ActionBarDrawerToggle mDrawerToggle;
private ProgressDialog progress;
int …Run Code Online (Sandbox Code Playgroud) 所以,我有这个Volley PUT请求:
private boolean syncCall(JSONObject jsonObject, final VolleyCallback
callback) {
final ProgressDialog progDailog = new ProgressDialog(context);
final Boolean[] success = {false};
progDailog.setMessage("...");
progDailog.setIndeterminate(false);
progDailog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progDailog.setCancelable(false);
progDailog.show();
final SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(context);
RequestQueue queue = Volley.newRequestQueue(context, new HurlStack());
final String token = prefs.getString("token", null);
String URL = Constants.getUrlSync();
String param1 = String.valueOf(prefs.getInt("pmp", 1));
String param2 = String.valueOf(prefs.getInt("ei", 1));
URL = URL.replace("[x]", param1);
URL = URL.replace("[y]", param2);
//pegar id pmp e IE corretas
JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request
.Method.PUT, URL, jsonObject, …Run Code Online (Sandbox Code Playgroud) 我正在尝试生成我的项目的Doka文档。在生成时,出现了上述错误。我搜索了很多,但无法获得解决方案。我也通过这个链接。在这里说这可能是与匕首有关的问题。我也尝试了所有这些解决方案,但不适用于我。我将所有Gradle文件发布在此处,以进行进一步说明。如果有人遇到此问题或知道解决方法,请发表评论。
项目摇篮:
buildscript {
ext.kotlin_version = '1.3.20'
ext.dokkaVersion = '0.9.17'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.dokka:dokka-android-gradle-plugin:$dokkaVersion"
classpath "org.jetbrains.kotlin:kotlin-allopen:1.3.20"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)
应用程式摇篮:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'org.jetbrains.dokka-android'
android { …Run Code Online (Sandbox Code Playgroud) 我有一个Android应用程序,大约有500-1000个标记.我现在用的是ClusterManager从Android的地图-utils的如这里群集这些标记.
在最新的Play服务更新中,Google更改了Google地图的收听模型.将OnCameraChangeListener被标记为已弃用.相反,有四个新的听众(OnCameraIdleListener, OnCameraMoveListener, OnCameraMoveStartedListener,OnCameraMoveCanceledListener).
自那次更新以来,我的应用程序非常慢.它坚持移动/缩放地图,聚类过程滞后,需要几秒钟.
我认为这种行为可能与侦听器模型中的更改有关.因此我试图addOnCameraChangeListener(clustermanager)用新的替换功能addOnCameraIdleListener(clustermanager).不幸的是,这不起作用,因为ClusterManager没有实现必要的接口.
这就是它变得奇怪的地方,因为ClusterManagerGitHub上的当前版本(0.4.3)确实实现了该接口.所以它应该工作.
我正在使用Gradle导入ClusterManager:
compile 'com.google.maps.android:android-maps-utils:0.4.3
但我的本地版本ClusterManager似乎仍然是一个旧的实现旧版本OnCameraChangeListener.
那么这里有什么问题?这是Gradle的不当行为吗?有人知道如何解决这个问题吗?自上次播放服务更新以来,Google Map/Clusterer的播放速度是否缓慢且有任何其他人?
我感谢任何帮助.多谢你们.
android markerclusterer google-maps-android-api-2 android-maps-utils
I can't make nanohttpd work. It seems not be able to find the www directory in app's root.
My code is at https://github.com/tlkahn/neonx
My code at MainActivity.java:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationView navView = findViewById(R.id.nav_view);
mWebView = findViewById(R.id.webkit);
navView.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
WebSettings webSettings = mWebView.getSettings();
webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
webSettings.setDomStorageEnabled(true);
mWebView.getSettings().setLoadsImagesAutomatically(true);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
return false;
}
});
if (!haveNetworkConnection()) {
new AlertDialog.Builder(this)
.setTitle("You are not connected to internet.")
.setMessage("Are you …Run Code Online (Sandbox Code Playgroud) android ×9
java ×3
google-maps ×2
android-collapsingtoolbarlayout ×1
build.gradle ×1
connection ×1
dagger-2 ×1
firebase ×1
gradlew ×1
html ×1
javascript ×1
kotlin ×1
kotlin-dokka ×1
localhost ×1
nanohttpd ×1
networking ×1
node.js ×1
wifi ×1