Android Studio查看布局层级的方法

1、使用Android Studio自带的Layout Inspector;

2、使用SDK工具包中的UI Automator Viewer;

3、使用dumpsys命令

通过adb shell dumpsys activity top命令,拿到activity的快照,内部包含布局信息。

也可以通过指定包名,只获取你自己应用的Activity信息:

adb shell dumpsys activity com.ldd.layoutapp(包名)

E:\Android\AndroidStudioProjects\LayoutApp>adb shell dumpsys activity com.ldd.layoutapp
TASK 10123:com.ldd.layoutapp id=89 userId=0
  ACTIVITY com.ldd.layoutapp/.MainActivity a6fb414 pid=15302
    Local Activity ba99d88 State:
      mResumed=true mStopped=false mFinished=false
      mIsInMultiWindowMode=false mIsInPictureInPictureMode=false
      mChangingConfigurations=false
      mCurrentConfig={1.0 310mcc260mnc [en_US] ldltr sw432dp w432dp h792dp 400dpi nrml long port finger qwerty/v/v dpad/v winConfig={ mBounds=Rect(0, 0 - 1080, 2160) mAppBounds=Rect(
0, 0 - 1080, 2040) mWindowingMode=fullscreen mDisplayWindowingMode=fullscreen mActivityType=standard mAlwaysOnTop=undefined mRotation=ROTATION_0} s.1}
      mLoadersStarted=true
      Active Fragments in 104513d:
        #0: ReportFragment{1c55d32 #0 androidx.lifecycle.LifecycleDispatcher.report_fragment_tag}
          mFragmentId=#0 mContainerId=#0 mTag=androidx.lifecycle.LifecycleDispatcher.report_fragment_tag
          mState=5 mIndex=0 mWho=android:fragment:0 mBackStackNesting=0
          mAdded=true mRemoving=false mFromLayout=false mInLayout=false
          mHidden=false mDetached=false mMenuVisible=true mHasMenu=false
          mRetainInstance=false mRetaining=false mUserVisibleHint=true
          mFragmentManager=FragmentManager{104513d in HostCallbacks{a1a1a83}}
          mHost=android.app.Activity$HostCallbacks@a1a1a83
          Child FragmentManager{5836400 in ReportFragment{1c55d32}}:
            FragmentManager misc state:
              mHost=android.app.Activity$HostCallbacks@a1a1a83
              mContainer=android.app.Fragment$1@969c439
              mParent=ReportFragment{1c55d32 #0 androidx.lifecycle.LifecycleDispatcher.report_fragment_tag}
              mCurState=5 mStateSaved=false mDestroyed=false
      Added Fragments:
        #0: ReportFragment{1c55d32 #0 androidx.lifecycle.LifecycleDispatcher.report_fragment_tag}
      FragmentManager misc state:
        mHost=android.app.Activity$HostCallbacks@a1a1a83
        mContainer=android.app.Activity$HostCallbacks@a1a1a83
        mCurState=5 mStateSaved=false mDestroyed=false
    ViewRoot:
      mAdded=true mRemoved=false
      mConsumeBatchedInputScheduled=false
      mConsumeBatchedInputImmediatelyScheduled=false
      mPendingInputEventCount=0
      mProcessInputEventsScheduled=false
      mTraversalScheduled=false      mIsAmbientMode=false      mUnbufferedInputSource=0
      android.view.ViewRootImpl$NativePreImeInputStage: mQueueLength=0
      android.view.ViewRootImpl$ImeInputStage: mQueueLength=0
      android.view.ViewRootImpl$NativePostImeInputStage: mQueueLength=0
    Choreographer:
      mFrameScheduled=false
      mLastFrameTime=54431098 (840399 ms ago)

InsetsController:
      InsetsState
        InsetsSource type=ITYPE_STATUS_BAR frame=[0,0][1080,60] visible=true
        InsetsSource type=ITYPE_NAVIGATION_BAR frame=[0,2040][1080,2160] visible=true
        InsetsSource type=ITYPE_TOP_GESTURES frame=[0,0][1080,60] visible=true
        InsetsSource type=ITYPE_BOTTOM_GESTURES frame=[0,2040][1080,2160] visible=true
        InsetsSource type=ITYPE_LEFT_GESTURES frame=[0,0][0,2160] visible=true
        InsetsSource type=ITYPE_RIGHT_GESTURES frame=[1080,0][1080,2160] visible=true
        InsetsSource type=ITYPE_TOP_TAPPABLE_ELEMENT frame=[0,0][1080,60] visible=true
        InsetsSource type=ITYPE_BOTTOM_TAPPABLE_ELEMENT frame=[0,2040][1080,2160] visible=true
        InsetsSource type=ITYPE_IME frame=[0,0][0,0] visible=false
    View Hierarchy:
      DecorView@8e81a7e[MainActivity]
        android.widget.LinearLayout{e59dbdf V.E...... ........ 0,0-1080,2040}
          android.view.ViewStub{abac02c G.E...... ......I. 0,0-0,0 #10201af android:id/action_mode_bar_stub}
          android.widget.FrameLayout{6196af5 V.E...... ........ 0,60-1080,2040}
            androidx.appcompat.widget.ActionBarOverlayLayout{5e7608a V.E...... ........ 0,0-1080,1980 #7f08007d app:id/decor_content_parent}
              androidx.appcompat.widget.ContentFrameLayout{7aa56fb V.E...... ........ 0,140-1080,1980 #1020002 android:id/content}
                android.widget.LinearLayout{b29b318 V.E...... ........ 0,0-1080,1840}
                  com.google.android.material.textview.MaterialTextView{1e2c171 VFED..C.. ........ 0,0-387,97 #7f08006f app:id/constraintLayoutAct1}
                  com.google.android.material.textview.MaterialTextView{2e2fb56 VFED..C.. ........ 0,97-507,194 #7f08014f app:id/singleInstanceAct}
                  com.google.android.material.textview.MaterialTextView{dbd67d7 V.ED..... ........ 0,194-350,345 #7f08017d app:id/text}
              androidx.appcompat.widget.ActionBarContainer{692e8c4 V.ED..... ........ 0,0-1080,140 #7f080032 app:id/action_bar_container}
                androidx.appcompat.widget.Toolbar{b1103ad V.E...... ........ 0,0-1080,140 #7f080030 app:id/action_bar}
                  androidx.appcompat.widget.AppCompatTextView{a2b76e2 V.ED..... ........ 40,36-284,103}
                  androidx.appcompat.widget.ActionMenuView{786aa73 V.E...... ........ 1080,0-1080,140}
                androidx.appcompat.widget.ActionBarContextView{437cd30 G.E...... ......I. 0,0-0,0 #7f080038 app:id/action_context_bar}
        android.view.View{f672da9 V.ED..... ........ 0,2040-1080,2160 #1020030 android:id/navigationBarBackground}
        android.view.View{88e1f2e V.ED..... ........ 0,0-1080,60 #102002f android:id/statusBarBackground}
    Looper (main, tid 2) {d977acf}
      (Total messages: 0, polling=false, quitting=false)

里面的 View Hierarchy: 部分就是你的Activity布局的完整层级结构了。

猜你喜欢

转载自blog.csdn.net/hnjcxy/article/details/124129843
今日推荐