Mouna
Mouna

Reputation: 627

Android get layout parent id

I would like to know what is the difference between View and ViewParent ? I am trying to get the Id of the parent of an ImageView but this I can't do :

myImageView.getParent().getId();

So is there another way to get this id ?

Upvotes: 9

Views: 11960

Answers (4)

Carlos Daniel
Carlos Daniel

Reputation: 2729

When you have a parent view with no id, but you do have a child with an id, the best option is to use parent:

val layoutWithId: FrameLayout = findViewById(R.id.withWithId)
val noIdLayout: RelativeLayout = (layoutWithId as FrameLayout).parent as RelativeLayout

A proper tool here to identify the view tree is the Layout Inspector from AS menu: Tools > Layout Inspector

It will give you a better idea of how your views are display in the tree, then you can easily which one is parent of who

Upvotes: 1

chakangost
chakangost

Reputation: 46

Surrounding imageview returns the parent layout id.

android:id="@+id/returnid"

example :

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

    <iamageView
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="24dp"
        android:text="test"
        android:background="@drawable/white"
        />

</RelativeLayout>

Upvotes: 1

Squonk
Squonk

Reputation: 48871

I would like to know what is the difference between View and ViewParent ?

A View is a class and a ViewParent is an interface.

Although many of the common layout classes implement the ViewParent interface it isn't guaranteed.

The problem you're having is that the myImageView.getParent() is returning a ViewParent which doesn't directly expose a getId() method.

As others have said, casting the ViewParent to a View using...

((View) myImageView.getParent()).getId();

...should work at compile time but be aware of the following...

  1. If the parent View doesn't implement the ViewParent interface then the cast will fail.
  2. The parent View must have a resource id defined in the layout file as (for example) android:id=@+id/myParentViewId or the call to getId will return null

Upvotes: 11

joao2fast4u
joao2fast4u

Reputation: 6892

You have to cast your parent view to a View, so you can use getId() method, using ((View) myImageView.getParent()).getId()

Upvotes: 3

Related Questions