javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

android-close()和disconnect()之间的区别?

Android蓝牙低功耗API实现了一种方法来连接到设备close(),但是实现了两种方法来关闭连接disconnect()close()

文档说:

  • close():断开建立的连接,或取消连接尝试 目前正在进行中。

  • close():应用程序完成后应尽快调用此方法 这个GATT客户。

BluetoothGatt.java的源代码显示close()取消注册该应用程序,disconnect()断开客户端连接。 但是,它没有说出实际含义。 我的意思是,如果只有一种方法可以连接到客户端,为什么有两种方法可以关闭/断开连接?

trans by 2020-08-04T22:03:46Z

Java-Android“单顶”启动模式和onNewIntent方法

我在Android文档中读到,通过将Activity的launchMode属性设置为singleTop或在Intent中添加startActivity(intent)标志,调用startActivity(intent)将重用单个Activity实例,并在onNewIntent回调中给我Intent。 我做了这两个事情,并且onNewIntent从不触发,onCreate每次都触发。 文档还说,this.getIntent()返回最初在创建活动时首次传递给该活动的意图。 在onCreate中,我打电话给getIntent,每次都得到一个新对象(我在另一个活动中创建了一个intent对象,并向其中添加了一个额外的东西...如果它返回我,则每次都应该相同。 相同的意图对象)。 所有这些使我相信我的活动并不像“单顶”那样,我也不明白为什么。

为了增加一些背景信息,以防万一我只是缺少必要的步骤,这是清单中的Activity声明以及我用来启动该活动的代码。 活动本身在这方面没有任何值得一提的事情:

在AndroidManifest.xml中:

    <activity
        android:name=".ArtistActivity"
        android:label="Artist"
        android:launchMode="singleTop">
    </activity>     

在我的通话活动中:

        Intent i = new Intent();
        i.putExtra(EXTRA_KEY_ARTIST, id);
        i.setClass(this, ArtistActivity.class);
        i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        startActivity(i);
trans by 2020-08-04T21:25:14Z

android-更改NumberPi的文本颜色

我已经看过大多数关于此的线程,但没有一个提供了有效的答案。 设置NumberPicker的样式无效(按照此线程:NumberPicker textColour)

将numberPicker上的style属性设置为具有颜色项的样式也不起作用。 在numberPicker XML上设置textColor属性也不会执行任何操作。

我最接近的是使用numberPicker将其getChildAt()转换为EditText,然后对该EditText进行setColor(),但这只会在初始化后更改子项的颜色,然后每次从子项中选择子项的颜色。 在其上 不是我要找的。

有什么帮助吗? 谢谢

trans by 2020-08-04T20:41:24Z

android-AdapterVi的onItemClickListener和OnItemSelectedListener之间的区别

文档说这两个监听器有什么区别:

OnItemSelectedListener-在选择此视图中的项目时要调用的回调的接口定义。

OnItemClickListener-单击此AdapterView中的项目时要调用的回调的接口定义。

选择,点击这些在触摸屏上不一样吗?

trans by 2020-08-04T18:55:57Z

sqlite-如何将Room Persistence Library导入Android项目

最近,我在Google I / O Room Persistence Library上宣布了该新功能,该功能可与Android上的Sqlite数据库一起使用。 我一直在寻找官方文档,但没有找到应该导入Android项目中gradle文件的依赖项。 有人可以帮我吗?

trans by 2020-08-04T18:20:55Z

android-在键盘上方设置FAB(浮动操作按钮)

这里已经问过,但没有适当的答案。

我希望FAB悬浮在键盘顶部。 而已。

例如

  1. 使用Android Studio打开一个新的TextView模板项目
  2. 将Hello World TextView更改为EditText
  3. 见下图:

enter image description here

trans by 2020-08-04T18:17:14Z

android-支持库23.1.1中的AppBarLayout.setExpanded(boolean,true)奇怪的动画

在我的应用中,我使用android.support.design.widget.AppBarLayout在特定事件上展开或收缩AppBarLayout

我得到了很好的结果,使用了android.support.design.widget.AppBarLayout的活泼生动的动画,然后我更新为animateOffsetTo,动画变得非常慢,一点也不活泼。

android.support.design.widget.AppBarLayout的源代码中,我在animateOffsetTo(在public static class Behavior extends HeaderBehavior<AppBarLayout>下)中找到了问题,版本23.1.0中是这样的:

private void animateOffsetTo(final CoordinatorLayout coordinatorLayout,
    final AppBarLayout child, int offset) {
   if (mAnimator == null) {
       mAnimator = ViewUtils.createAnimator();
       mAnimator.setInterpolator(AnimationUtils.DECELERATE_INTERPOLATOR);
       mAnimator.setUpdateListener(new ValueAnimatorCompat.AnimatorUpdateListener() {

           @Override
           public void onAnimationUpdate(ValueAnimatorCompat animator) {
               setHeaderTopBottomOffset(coordinatorLayout, child,
                    animator.getAnimatedIntValue());
           }
       });
   } else {
       mAnimator.cancel();
   }
   mAnimator.setIntValues(getTopBottomOffsetForScrollingSibling(), offset);
   mAnimator.start();
}

在23.1.1版本中是这样的:

private void animateOffsetTo(final CoordinatorLayout coordinatorLayout,
    final AppBarLayout child, final int offset) {
   final int currentOffset = getTopBottomOffsetForScrollingSibling();
   if (currentOffset == offset) {
       if (mAnimator != null && mAnimator.isRunning()) {
           mAnimator.cancel();
       }
       return;
   }
   if (mAnimator == null) {
       mAnimator = ViewUtils.createAnimator();
       mAnimator.setInterpolator(AnimationUtils.DECELERATE_INTERPOLATOR);
       mAnimator.setUpdateListener(new ValueAnimatorCompat.AnimatorUpdateListener() {
           @Override
           public void onAnimationUpdate(ValueAnimatorCompat animator) {
            setHeaderTopBottomOffset(coordinatorLayout, child,
                    animator.getAnimatedIntValue());
           }
       });
   } else {
       mAnimator.cancel();
   }
   // Set the duration based on the amount of dips we're travelling in
   final float distanceDp = Math.abs(currentOffset - offset) /
        coordinatorLayout.getResources().getDisplayMetrics().density;
   mAnimator.setDuration(Math.round(distanceDp * 1000 / ANIMATE_OFFSET_DIPS_PER_SECOND));
   mAnimator.setIntValues(currentOffset, offset);
   mAnimator.start();
}

如何更改扩展/收缩动画并使其更快?

trans by 2020-08-04T13:23:54Z

[react-native]无法连接到Android上的开发服务器

当我运行“ react-native run-android”时,出现错误:“无法连接到开发服务器...”。

  • 打包服务器正在运行,我可以直接从浏览器访问它在移动设备中。
  • 我连接到计算机的Android设备已启用调试使用adb devices命令检查了它。
  • 我的android版本是4.4.4,所以我不能使用adb reverse命令。
  • 我已经在开发设置中设置了IP地址和端口。
  • USB调试已打开。
  • 操作系统是Windows 7。

那么如何解决红色错误屏幕问题呢?

Error screen

trans by 2020-08-04T12:39:06Z

如何在Android中为WebView制作滚动监听器

如何在Android中实现MainActivity.java的Scroll Listener

我尝试了此操作,但在滚动Web视图时未调用我的MainActivity.java

package com.example.webview.full.width;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.webkit.WebView;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;

public class scorllableWebview extends WebView implements OnScrollListener {


Context ctx;
AttributeSet atrs;

public scorllableWebview(Context context) {
    super(context);

    ctx = context;
}

public scorllableWebview(Context context, AttributeSet atters){
    super(context, atters);

    ctx = context;
    atrs = atters;
}

@Override
public void onScroll(AbsListView view, int firstVisibleItem,
        int visibleItemCount, int totalItemCount) {

    Log.i("onScroll", "Called");
}

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {


    Log.i("onScrollStateChanged", "Called");

}
}

这是我的MainActivity.java

package com.example.webview.full.width;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.Menu;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class MainActivity extends Activity {

ProgressDialog progressDialog;
scorllableWebview wv;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    wv = (scorllableWebview) findViewById(R.id.scorllableWebview);

    wv.getSettings().setJavaScriptEnabled(true);

    wv.getSettings().setBuiltInZoomControls(true);
    wv.getSettings().supportZoom();

    progressDialog = ProgressDialog.show(MainActivity.this,
            "Loading Book...!", "Please Wait");
    progressDialog.setCancelable(true);

    String htnlString = "<!DOCTYPE html><html><body style = \"text-align:center\"><script type=\"text/javascript\">for(a=1;a<=10;a++)document.write('<img style=\"border-style:dotted;border-width:10px;border-color:black;\"src=\"http://myURL.com/books_snaps/EN567/'+a+'.jpg\" alt=\"Page Not Found\"/>');</script></body></html>";
    // width=\"100%\"
    wv.setWebViewClient(new WebViewClient() {

        @Override
        public void onPageFinished(WebView view, String url) {
            progressDialog.dismiss();
            Toast.makeText(MainActivity.this, "Completed",
                    Toast.LENGTH_SHORT).show();
            wv.pageUp(true);
            super.onPageFinished(view, url);
        }

    });

    wv.loadDataWithBaseURL(null, htnlString, "text/html", "UTF-8", null);

}
   }

这是我的XML文件。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<com.example.webview.full.width.scorllableWebview
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scorllableWebview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</RelativeLayout>
trans by 2020-08-04T04:03:17Z

android-在RecyclerVi中的组上划分元素

我需要将RecyclerView中的元素划分为具有标题的组(如下面图片中的Inbox应用程序中所示),所以请帮助我找出哪种方法更适合我的情况:1)我可以为其使用异构布局,但是在组中插入新元素并不方便(因为我需要检查是否已添加同一组的元素,或者需要添加新的分隔线)。 因此,在这种情况下,我会将具有此类数据结构的所有操作包装到单独的类中。

2)从理论上讲,我可以将每个组包装在带有标签的自己的RecyclerView中,这是一个好主意吗?

Inbox app

trans by 2020-08-04T03:23:49Z

adb-具有多个查询参数的Android深层链接

我正在尝试深层链接我的应用程序,并在AndroidManifest.xml中实现了以下内容以打开适当的活动。

<activity
    android:name=".ui.activities.MyActivity"
    android:label="@string/title_activity"
    android:screenOrientation="portrait">
    <!-- ATTENTION: This intent was auto-generated. Follow instructions at
    https://g.co/AppIndexing/AndroidStudio to publish your Android app deep links. -->
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- ATTENTION: This data URL was auto-generated. We recommend that you use the HTTP scheme.
        TODO: Change the host or pathPrefix as necessary. -->
        <data
            android:host="myHost"
            android:scheme="myCustomScheme" />
    </intent-filter>
</activity>

我正在使用测试来自adb的活动

adb shell am start -W -a android.intent.action.VIEW -d "myCustomScheme://myHost?key=category_parent_id&value=92&title=test" com.myApp.android

活动正在打开,但是仅传递给意图中活动的URI

myCustomScheme://myHost?key=category_parent_id

它会跳过'&'之后的所有内容

我确实在这里查找了SO,但是没有找到具有多个查询参数的任何内容。

trans by 2020-08-04T03:04:14Z

java-如何在Kotlin中组合Intent标志

我想结合两个意图标志,就像我们在android中做的那样

Intent intent = new Intent(this, MapsActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);

我试图做这样的事情,但对我没有用

val intent = Intent(context, MapActivity::class.java)
intent.flags = (Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK)
trans by 2020-08-03T22:50:53Z

android-使用新的架构组件ViewMod在片段之间共享数据

在上一个Google IO上,Google发布了一些新的Arch组件的预览,其中一个是ViewModel。

Google在文档中显示了此组件的一种可能用途:

一个活动中的两个或多个片段通常需要 互相交流。 这绝不是小事,因为这两个片段 需要定义一些接口描述,并且所有者活动必须 将两者捆绑在一起。 而且,两个片段都必须处理案件 另一个片段尚未创建或不可见的地方。

可以通过使用ViewModel对象解决此常见的痛点。 想象一下主细节片段的常见情况,我们有一个 用户从列表中选择一个项目和另一个项目的片段 显示所选项目内容的片段。

这些片段可以使用其活动范围来共享ViewModel 处理此沟通。

并显示一个实现示例:

public class SharedViewModel extends ViewModel {
    private final MutableLiveData<Item> selected = new MutableLiveData<Item>();

    public void select(Item item) {
        selected.setValue(item);
    }

    public LiveData<Item> getSelected() {
        return selected;
    }
}

public class MasterFragment extends Fragment {
    private SharedViewModel model;
    public void onActivityCreated() {
        model = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);
        itemSelector.setOnClickListener(item -> {
            model.select(item);
        });
    }
}

public class DetailFragment extends LifecycleFragment {
    public void onActivityCreated() {
        SharedViewModel model = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);
        model.getSelected().observe(this, { item ->
           // update UI
        });
    }
}

我对不需要那些用于片段的接口通过活动进行通信的可能性感到非常兴奋。

但是Google的示例并未确切显示我将如何从master调用细节片段。

我仍然必须使用将由该活动实现的接口,该接口将调用fragmentManager.replace(...),或者还有另一种使用新体系结构的方法?

trans by 2020-08-03T21:18:23Z

android-在WebView中加载本地html?

我想使用“ [file:///”]将本地html加载到WebView中而不使用,因为这不允许cookie。 有没有办法使用“ localhost”之类的东西?

其次,我找不到在getSettings()中启用cookie的方法。 因为使用“ [file:///”时不允许使用cookie。]

trans by 2020-08-03T20:02:51Z

java-从JSON字符串创建Hashmap

从java中的json字符串创建哈希图?

我有一个像{"phonetype":"N95","cat":"WP"}这样的json字符串,想转换成一个标准的Hashmap。

我该怎么做?

trans by 2020-08-03T19:51:43Z

在Android中获得WiFi信号强度

我可以使用以下代码获得dBm的WiFi信号电平。

for (ScanResult result : wifiScanResultList) {
    int signalLevel = result.level;
}

它给出负值。 当我们看到默认的系统WiFi设置并单击连接的WiFi网络时,它会给出“良好”或“不良”作为信号强度。 我们可以将那些负值过滤为“好”信号强度或“坏”信号强度的范围是多少?

trans by 2020-08-03T19:26:21Z

位图-从通知Android中的网址加载图像

在我的Android应用程序中,我想动态设置将从URL加载的Notification图标。 为此,我在receiver中使用了NotificationBuilder的setLargeIcon属性。我引用了许多链接并尝试了各种解决方案,但无法获得所需的输出。 虽然我从url下载了该图像并在通知中设置了该位图,但未显示该图像。 而是将setSmallIcon图像显示为大图标。 我不知道我要去哪里错了。 我在这里发布我的代码。 请帮我解决这个问题。 谢谢。

码:

@SuppressLint("NewApi")
public class C2DMMessageReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if ("com.google.android.c2dm.intent.RECEIVE".equals(action)) {
            Log.e("C2DM", "received message");
            final String fullName = intent.getStringExtra("message");
            final String payload1 = intent.getStringExtra("message1");
            final String payload2 = intent.getStringExtra("message2");
            final String userImage = intent.getStringExtra("userImage");

            Log.e("userImage Url :", userImage); //it shows correct url

            new sendNotification(context)
                    .execute(fullName, payload1, userImage);
        }
    }

private class sendNotification extends AsyncTask<String, Void, Bitmap> {

        Context ctx;
        String message;

        public sendNotification(Context context) {
            super();
            this.ctx = context;
        }

        @Override
        protected Bitmap doInBackground(String... params) {

            InputStream in;
            message = params[0] + params[1];
            try {

                in = new URL(params[2]).openStream();
                Bitmap bmp = BitmapFactory.decodeStream(in);
                return bmp;

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Bitmap result) {

            super.onPostExecute(result);
            try {
                NotificationManager notificationManager = (NotificationManager) ctx
                        .getSystemService(Context.NOTIFICATION_SERVICE);

                Intent intent = new Intent(ctx, NotificationsActivity.class);
                intent.putExtra("isFromBadge", false);


                Notification notification = new Notification.Builder(ctx)
                        .setContentTitle(
                                ctx.getResources().getString(R.string.app_name))
                        .setContentText(message)
                        .setSmallIcon(R.drawable.ic_launcher)
                        .setLargeIcon(result).build();

                // hide the notification after its selected
                notification.flags |= Notification.FLAG_AUTO_CANCEL;

                notificationManager.notify(1, notification);

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
trans by 2020-08-03T18:49:21Z

java-NoClassDefFoundError:无法解决以下问题:Lokhttp3 / internal / Platform

我正在使用build.gradle库。

我已经尝试更新最新版本:build.gradle文件中的Retrofit2,Gson,Rxjava,OKHttp,HttpLoggingInterceptor ...

build.gradle在申请中

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2',         {
    exclude group: 'com.android.support', module: 'support-annotations'
})

// Default - Android Component
testCompile 'junit:junit:4.12'
compile 'com.android.support:design:24.2.1'
compile 'com.android.support:appcompat-v7:24.2.1'

// Retrofit2 + Gson
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.google.code.gson:gson:2.6.2'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.3.0'
compile 'com.squareup.okhttp3:okhttp:3.4.1'

// RxJva
compile 'io.reactivex:rxandroid:1.2.0'
compile 'io.reactivex:rxjava:1.1.4'
}

但是我有错误

 > Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lokhttp3/internal/Platform;
at okhttp3.logging.HttpLoggingInterceptor$Logger$1.log(HttpLoggingInterceptor.java:112)
at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:160)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
at internal.NetworkModule$1.intercept(NetworkModule.java:150)

在下面的代码中

Interceptor provideInterceptor(final Context context, final PreferenceStore preferenceStore) {
    Interceptor headerAuthorizationInterceptor = new Interceptor() {
        @Override
        public okhttp3.Response intercept(Interceptor.Chain chain) throws IOException {
            // Get Android ID
            String android_id = Settings.Secure.getString(context.getContentResolver(),
                    Settings.Secure.ANDROID_ID);

            // Get Application Version
            String appVersion = "";
            try {
                PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
                appVersion = packageInfo.versionName;
            } catch (PackageManager.NameNotFoundException e) {
                Timber.e("Cannot get app version");
            }

            /**
             * Add header with following attributes as agree with Web Server
             * - Token
             * - "Android"
             * - Release version
             * - Model
             * - App version
             * - Android ID
             */
            String token = preferenceStore.getAuthToken();

            Timber.i("X-Asukabu-Token: %s", token);

            // Add header to request
            Request request = chain.request();
            if (token != null)
                request.headers().newBuilder()
                        .add("X-Asukabu-Token", token)
                        .add("X-Asukabu-Client-OS", "Android")
                        .add("X-Asukabu-Client-OS-Version", Build.VERSION.RELEASE)
                        .add("X-Asukabu-Client-Device", Build.MODEL)
                        .add("X-Asukabu-Client-App-Version", appVersion)
                        .add("X-Asukabu-Client-Device-ID", android_id)
                        .add("Accept","*/*")
                        .build();
            else
                request.headers().newBuilder()
                        .add("X-Asukabu-Client-OS", "Android")
                        .add("X-Asukabu-Client-OS-Version", Build.VERSION.RELEASE)
                        .add("X-Asukabu-Client-Device", Build.MODEL)
                        .add("X-Asukabu-Client-App-Version", appVersion)
                        .add("X-Asukabu-Client-Device-ID", android_id)
                        .add("Accept","*/*")
                        .build();

            // ERROR IN THIS LINE : LINE 150
            return chain.proceed(request);
        }
    };

    return headerAuthorizationInterceptor;
}

项目中的build.gradle

buildscript {
repositories {
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:2.2.0-rc2'

    // Dagger 2
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}
}

知道我为什么会收到此错误的人吗?

请告诉我如何解决,

谢谢,

trans by 2020-08-03T15:21:37Z

android-隐藏/显示bottomNavigationView

我必须在向上滚动时隐藏底部导航视图,而在向下滚动时显示。如何实现呢?我的布局是这样的

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_above="@+id/navigation"
        android:layout_alignParentTop="true"
        android:layout_marginBottom="5dp">

        <FrameLayout
            android:id="@+id/container1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
          />


    </LinearLayout>

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="?android:attr/windowBackground"
        app:layout_scrollFlags="scroll|enterAlways|snap"
        app:menu="@menu/dashboard_slider_menu" />

</RelativeLayout>

我已附上视图的屏幕截图。 请检查一下。

enter image description here

trans by 2020-08-03T15:16:07Z

android-触发View的measure()的原因

在我的应用程序中,我的View的onMeasure()重写之一具有无限循环。 从onMeasure的断点开始调试源代码,我可以一直跟踪到堆栈,一直跟踪到PhoneWindow $ DecorView的measure()(在View层次结构中最高级的类),ViewRoot会调用它 .performTraversals()。 现在从这里开始,如果我继续前进,最终将得到Looper.loop()类中的消息再次调用PhoneWindow $ DecorView的measure()。 我猜测某些内容已排队,需要重新衡量,例如无效。

我的问题是,什么触发条件需要在视图上进行度量调用?

根据我对布局/测量/绘制过程的理解,只有在特定视图上调用invalidate()方法时,才会发生这种情况,并且会滴落并为无效的该视图执行布局/测量/绘制过程,并且所有 它的孩子们。 我认为在某种程度上我的视图层次结构中最重要的视图将变得无效。

但是,我已经在我拥有的每个无效调用上都明确指定了一个断点,并且没有以某种无限的方式调用无效。 因此,我认为并非如此。 还有另一种触发测量通过的方法吗? 内部会引起这种情况吗? 在看到没有什么是无限无效之后,我有点想法了。

trans by 2020-08-03T14:47:24Z

上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 下一页 共280页