Получить идентификатор ограничения программно - PullRequest
0 голосов
/ 16 ноября 2018

С учетом следующего xml:

<ImageView
    android:id="@+id/someTag"
    android:layout_width="10dp"
    android:layout_height="10dp"
    android:layout_marginBottom="12dp"
    android:layout_marginStart="8dp"
    android:tag="someTag"
    app:layout_constraintBottom_toTopOf="@+id/someID"
    app:layout_constraintStart_toEndOf="@+id/someID"

Я хотел бы знать, как получить идентификатор

app:layout_constraintBottom_toTopOf

(а именно "someID") программно.

Большое спасибо!

1 Ответ

0 голосов
/ 16 ноября 2018

Это значение атрибута хранится в ImageView LayoutParams, которые, в частности, ConstraintLayout.LayoutParams, в данном случае, поскольку его родителем является ConstraintLayout.

ConstraintLayout.LayoutParams имеет поле bottomToTop, в котором содержится идентификатор View для этого конкретного ограничения.

Просто получите ImageView LayoutParams, приведите их к ConstraintLayout.LayoutParams и получите свой идентификатор из вышеупомянутого поля. Например:

ImageView image = findViewById(R.id.someTag);
ConstraintLayout.LayoutParams lp = (ConstraintLayout.LayoutParams) image.getLayoutParams();
int bottomToTopId = lp.bottomToTop;

Если по какой-то причине вам нужно фактическое имя ресурса для этого идентификатора, вы можете получить его обычным способом Resources#getResourceEntryName(). То есть:

String viewIdName = getResources().getResourceEntryName(bottomToTopId); // returns "someID"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...