小编Pra*_*iya的帖子

在CollapsingToolbarLayout而不是Title中的多行文本视图

我想在"折叠"工具栏中显示一些文本而不是标题.问题是文本可能包含多于1行.所以我需要使用自定义视图,但无法理解如何以适当的方式实现它.

另外,如何设置最小CollapsingToolbar高度,始终显示所有文本行,而不是将它们折叠为一个?

总之,我需要这样的东西:

在此输入图像描述

1 - 开始位置和3 - 结束位置(达到此工具栏高度后不再崩溃).

android android-layout material-design android-collapsingtoolbarlayout

11
推荐指数
1
解决办法
4651
查看次数

Firebase云功能始终超时

我正在探索firebase云功能,我正在尝试使用http请求发送通知.

问题是,即使我设法发送通知,请求总是超时.

这是我的剧本

/functions/index.js
const 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

11
推荐指数
1
解决办法
4223
查看次数

Gradle 3.0.0-beta1构建问题

我刚刚将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

10
推荐指数
1
解决办法
940
查看次数

使用ClusterManager时如何在Map上更新标记

我正在尝试使用来自服务器的更新数据更新我的地图,但我无法弄清楚如何从地图中删除旧项目(标记和群集 - 使用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)

java android google-maps google-maps-api-3 markerclusterer

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

即使没有互联网访问,强制Android 6.x Marshmallow使用WiFi连接

我正在使用应用程序,我需要与我的路由器通信.我需要从他的路由器下载一个文件local ip.如果路由器无法访问互联网,Android会尝试通过该文件下载该文件mobile network.

WiFi即使没有互联网访问,有没有办法强制Android使用?(它是Android的一项新功能,Marshmallow可以显示WiFi但使用移动网络).该文件不能WAN仅从中访问LAN.

我可以强制它,当我禁用移动网络或打开启用WiFi的飞行模式,但这不是一个选项.我需要以编程方式强制执行此特定下载.

connection networking android wifi android-6.0-marshmallow

7
推荐指数
0
解决办法
1783
查看次数

如何在Android中显示地图中的实际道路路线驾驶模式

我有一个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)

java android google-maps driving-directions

7
推荐指数
1
解决办法
858
查看次数

Android排名DefaultRetryPolicy无法按预期工作

所以,我有这个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)

android android-volley

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

错误:类型不兼容:NonExistentClass无法转换为Annotation @ error.NonExistentClass()

我正在尝试生成我的项目的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 kotlin dagger-2 kotlin-dokka

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

谷歌地图与群集管理器:不推荐使用onCameraChangeListener

我有一个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

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

Using nanohttpd for server on localhost, how to serve the static HTML code in the whole directory?

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)

html java android localhost nanohttpd

5
推荐指数
2
解决办法
212
查看次数