get Partent()とget RootView()
11095 ワード
get Partent()とget RootView()はすべてViewの種類の下の方法で、帰ってくるのは1つのviewです。
get Partent()
名前から理解すると、getPartent()は父Viewを獲得しています。彼が父Viewを持っていないとnullに戻ります。
くりを一つあげる:
私たちはこれが何階もあるのを見ることができます。最後はDecorViewです。view.getRoot View()を使って直接DecorViewを得る。なぜこんなに重層なのかを知りたいなら、Viewの制作プロセスを勉強してもいいです。
get Root View()
現在のビューのルートレイアウトを返します。上の結果のように、すべてのビューは1階に包まれています。すべては必ず一番外にあります。これは一番外に帰ります。
もう一番外だったら、自分に帰ります。
get Partent()
名前から理解すると、getPartent()は父Viewを獲得しています。彼が父Viewを持っていないとnullに戻ります。
くりを一つあげる:
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/image"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="56dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.212"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
androidx.constraintlayout.widget.ConstraintLayout>
ここでは制約配置でImageViewを定義した。私はget Part()を使って結果を見ます。view=findViewById(R.id.image) //ImageView
view.getParent();
//androidx.constraintlayout.widget.ConstraintLayout
view.getParent().getParent().getParent();
//androidx.appcompat.widget.ContentFrameLayout
view.getParent().getParent().getParent().getParent();
//androidx.appcompat.widget.ActionBarOverlayLayout
view.getParent().getParent().getParent().getParent().getParent();
//android.widget.FrameLayout
view.getParent().getParent().getParent().getParent().getParent().getParent();
//android.widget.LinearLayout
view.getParent().getParent().getParent().getParent().getParent().getParent().getParent();
//DecorView
父ViewをgetPartent()で探し続けています。こんなにたくさん探してくれたら、見つけられます。私たちはこれが何階もあるのを見ることができます。最後はDecorViewです。view.getRoot View()を使って直接DecorViewを得る。なぜこんなに重層なのかを知りたいなら、Viewの制作プロセスを勉強してもいいです。
get Root View()
現在のビューのルートレイアウトを返します。上の結果のように、すべてのビューは1階に包まれています。すべては必ず一番外にあります。これは一番外に帰ります。
もう一番外だったら、自分に帰ります。
View v = LayoutInflater.from(this).inflate(R.layout.view, null);
v.getRootView(); // , , , 。