지침을 사용하여 제한된 버튼 또는 이미지의 너비와 높이를 얻는 방법

Cjnash

나는 여기서 완전히 혼란 스럽습니다. Constraint Layout의 지침에 따라 크기가 조정 된 버튼을 기반으로 이미지의 높이와 너비를 동적으로 설정하려고했습니다. 이렇게하면 응용 프로그램이 화면 크기에 따라 이미지 크기를 올바른 크기로 조정할 수 있으므로 모든 장치에서 작동하거나 그것이 내 목표입니다.

사용중인 코드는 다음과 같습니다.

ImageView snellen;
Button ghostButton;

private final double HEIGHT_RATIO = 11/8.5;
//private final double DISTANCE_RATIO = 120/8.5;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_snellencharttest);

    snellen = (ImageView) findViewById(R.id.snellen);
    ghostButton = (Button) findViewById(R.id.ghostButton);

    snellen.setX(ghostButton.getX());
    snellen.setY(ghostButton.getY());

    ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) snellen.getLayoutParams();
    params.width = ghostButton.getWidth();
    params.height = (getHeightRatio(ghostButton.getHeight(), HEIGHT_RATIO));

    snellen.setLayoutParams(params);

    System.out.println("########################################################################### WIDTH: " + snellen.getWidth());
    System.out.println("########################################################################### HEIGHT: " + snellen.getHeight());


    ghostButton.setVisibility(View.INVISIBLE);
}

private int getHeightRatio(int ghostHeight, double ratio) {
    double calc = ghostHeight*ratio;
    return ((int) Math.round(calc));
}

내가하려는 작업을 설명하기 위해 : 제약 조건에 따라 내 xml에 배치되는 버튼이 있으며 아래 코드를 제공 할 것입니다. 내가하고 싶었던 것은 버튼의 x와 y 위치를 얻은 다음 높이와 너비를 얻고 버튼이있는 곳에 이미지를 거의 레이어링하는 것입니다. 이 예에서는 "화면"버튼의 너비를 얻은 다음 높이를 원래 이미지 크기의 비율로 설정합니다. 그런 다음 참조 용으로 사용하고 있으므로 버튼을 사라지게합니다.

그러나 보시다시피 이미지의 높이와 너비를 알려주는 SOP를 포함했습니다. 둘 다 0을 반환합니다. 이미지를 볼 때 확실히 0 x 0보다 크기 때문에 혼란 스럽습니다. 이렇게하면 이미지가 화면에 맞게 크기가 조정될 수 있습니까? 그렇다면 그것이 내가 달성하고자하는 것이지만 그 이미지의 너비와 높이를 얻을 수 있어야합니다.

다음은 유용 할 수있는 내 xml입니다.

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<!-- ____________________________________________ VERTICAL _________________________________ -->

<android.support.constraint.Guideline
    android:id="@+id/uno"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="0.05"/>

<android.support.constraint.Guideline
    android:id="@+id/dos"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="0.95"/>

<!-- __________________________________________ HORIZONTAL _________________________________ -->

<android.support.constraint.Guideline
    android:id="@+id/firstRail"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:orientation="horizontal"
    app:layout_constraintGuide_percent="0"/>

<android.support.constraint.Guideline
    android:id="@+id/secondRail"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:orientation="horizontal"
    app:layout_constraintGuide_percent="1"/>

<!-- __________________________________________ ECT __________________________________________-->

<ImageView
    android:layout_width="56dp"
    android:layout_height="62dp"
    android:id="@+id/snellen"
    app:srcCompat="@drawable/eyechart"
    android:layout_marginLeft="-7dp"
    app:layout_constraintLeft_toLeftOf="parent"
    android:layout_marginBottom="0dp"
    app:layout_constraintBottom_toTopOf="@+id/secondRail" />

<Button
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:id="@+id/ghostButton"
    app:layout_constraintTop_toTopOf="@id/firstRail"
    app:layout_constraintLeft_toLeftOf="@id/uno"
    app:layout_constraintRight_toRightOf="@id/dos"
    app:layout_constraintBottom_toBottomOf="@id/secondRail"/>

</android.support.constraint.ConstraintLayout>

나중에 크기를 조정할 것이기 때문에 ImageView를 임의의 모서리에 배치하고 실제로 위치와 크기를 변경하므로 프로그램이 원하는대로 작동한다고 가정했습니다.

앞서 말했듯이 버튼 layout_width버튼 layout_height이 0으로 설정되어 있고 제약 조건에 따라 크기가 조정 된다는 사실이 문제 입니까? 그렇다면, 내 질문 변경 : 어떻게 구속되어 이미지 / 버튼의 폭과 높이를 얻을 수 있습니다 layout_widthlayout_height0입니까?

이에 대한 통찰력을 높이 평가합니다.

편집하다:

편집 내용을 표시하기 전에 적절할 수도 있고 아닐 수도있는 작은 사이드 노트 : 사용중인 이미지가 매우 큽니다. drawable-xhdpi이 줄을 내 매니페스트에 추가해야 할뿐만 아니라이 줄을 매니페스트 에 추가해야했습니다. 그렇지 않으면 앱이 중단됩니다.android:hardwareAccelerated="false"

Muthukrishnan Rajendran 덕분에 뷰가 완전히로드 될 때까지 기다리기 위해 onCreate에 게시물을 추가하여 너비와 높이를 얻는 데 도움이되었습니다. 불행히도 내가 그것을 추가했을 때 내 이미지가 더 이상 나타나지 않습니다. 나는 다음과 같이 모든 것을 실행에 넣었습니다.

 ghostButton.post(new Runnable() {
        @Override
        public void run() {
            snellen.setX(ghostButton.getX());
            snellen.setY(ghostButton.getY());

            ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) snellen.getLayoutParams();
            params.width = ghostButton.getWidth();
            params.height = (getHeightRatio(ghostButton.getHeight(), HEIGHT_RATIO));

            snellen.setLayoutParams(params);

            System.out.println("########################################################################### WIDTH: " + snellen.getWidth());
            System.out.println("########################################################################### HEIGHT: " + snellen.getHeight());

            ghostButton.setVisibility(View.INVISIBLE);
        }
    });

이 올바른지? 내 이미지가 표시되지 않게하는 실행 내부에 무언가가 있습니까?

무투 크리슈 난 라 젠드 란

화면에 뷰를 첨부 한 후 너비와 높이를 구해 보시고, onCreate방법을 통해 완성되어야합니다 .

그러면 어떻게?

이렇게 사용할 수 있습니다

view.post(new Runnable() {
            @Override
            public void run() {

            }

    });

따라서이 항목이 활동 화면에 첨부 된 후 실행 메소드가 호출을받습니다.

따라서 예를 들어 x와 y를 얻으려면 다음과 ghostButton같이해야합니다.

ghostButton.post(new Runnable() {
            @Override
            public void run() {
                snellen.setX(ghostButton.getX());
                snellen.setY(ghostButton.getY());
            }
        });

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

iOS의 이미지와 관련하여 UI 버튼 너비와 높이를 동적으로 변경하는 방법

분류에서Dev

iOS의 이미지와 관련하여 UI 버튼 너비와 높이를 동적으로 변경하는 방법

분류에서Dev

CSS에 지정된 이미지의 너비와 높이를 변경하는 방법

분류에서Dev

수정 한 이미지의 너비와 높이를 되 돌리는 방법

분류에서Dev

이미지 너비와 높이를 줄이는 방법은 제약 조건을 사용하여 전화에 따라 달라 집니까?

분류에서Dev

조각에서 버튼의 너비 / 높이를 얻는 방법

분류에서Dev

이미지 C #에서 너비와 높이를 설정하는 방법

분류에서Dev

SVG 요소의 너비와 높이를 제어하는 방법

분류에서Dev

드래그 가능한 이미지에 너비와 높이를 설정하는 방법은 무엇입니까?

분류에서Dev

jquery를 사용하여 무작위로 배치 된 이미지의 겹침을 방지하는 방법

분류에서Dev

JPanel 동일한 너비와 높이를 얻는 방법

분류에서Dev

iOS : viewForHeaderInSection의 사용자 지정보기에 스 와이프하여 삭제 버튼을 추가하는 방법

분류에서Dev

Cypress를 사용하여 HTML 요소의 높이 또는 너비가 지정된 양보다 큰지 확인하는 방법은 무엇입니까?

분류에서Dev

버튼을 사용하여 Fabric.js 캔버스에서 이미지를 제거하는 방법

분류에서Dev

jquery에서 이미지 높이 너비를 얻는 방법

분류에서Dev

SwiftUI에서 이미지의 너비와 높이를 설정하는 방법은 무엇입니까?

분류에서Dev

js에서 이미지 객체의 높이와 너비를 설정하는 방법

분류에서Dev

버튼 또는 하이퍼 링크를 사용하여 데이터베이스에 저장된 이미지를 호출하는 방법

분류에서Dev

matplotlib를 사용하여 지정된 너비와 높이로 텍스트를 그리는 방법이 있습니까?

분류에서Dev

PowerPoint에서 LoadImage ()의 너비와 높이를 지정하는 방법

분류에서Dev

속성을 사용하는 대신 외부 스타일 시트를 통해 이미지의 너비 / 높이를 제어하는 방법은 무엇입니까?

분류에서Dev

IPython.display : 표시된 이미지의 너비, 높이 및 해상도를 변경하는 방법

분류에서Dev

jquery를 사용하여 선택한 이미지의 소스를 얻는 방법

분류에서Dev

Laravel 4.1, 함수 내에서 이미지 높이와 너비를 비교하는 방법

분류에서Dev

이미지 너비와 높이를 비디오 태그에 상속하는 방법

분류에서Dev

그리드를 사용하여 텍스트와 이미지 옆에 버튼이있는 방법

분류에서Dev

내 앱이 기기에서 느리게 실행되는 이유는 내가 사용하는 이미지와 하드 코딩 된 너비와 높이를 제거하는 방법 때문입니다.

분류에서Dev

CSS를 사용하여 버튼과 이미지를 한 줄로 표시하는 방법

분류에서Dev

SwiftUI에서보기 또는 화면의 높이와 너비를 얻는 방법

Related 관련 기사

  1. 1

    iOS의 이미지와 관련하여 UI 버튼 너비와 높이를 동적으로 변경하는 방법

  2. 2

    iOS의 이미지와 관련하여 UI 버튼 너비와 높이를 동적으로 변경하는 방법

  3. 3

    CSS에 지정된 이미지의 너비와 높이를 변경하는 방법

  4. 4

    수정 한 이미지의 너비와 높이를 되 돌리는 방법

  5. 5

    이미지 너비와 높이를 줄이는 방법은 제약 조건을 사용하여 전화에 따라 달라 집니까?

  6. 6

    조각에서 버튼의 너비 / 높이를 얻는 방법

  7. 7

    이미지 C #에서 너비와 높이를 설정하는 방법

  8. 8

    SVG 요소의 너비와 높이를 제어하는 방법

  9. 9

    드래그 가능한 이미지에 너비와 높이를 설정하는 방법은 무엇입니까?

  10. 10

    jquery를 사용하여 무작위로 배치 된 이미지의 겹침을 방지하는 방법

  11. 11

    JPanel 동일한 너비와 높이를 얻는 방법

  12. 12

    iOS : viewForHeaderInSection의 사용자 지정보기에 스 와이프하여 삭제 버튼을 추가하는 방법

  13. 13

    Cypress를 사용하여 HTML 요소의 높이 또는 너비가 지정된 양보다 큰지 확인하는 방법은 무엇입니까?

  14. 14

    버튼을 사용하여 Fabric.js 캔버스에서 이미지를 제거하는 방법

  15. 15

    jquery에서 이미지 높이 너비를 얻는 방법

  16. 16

    SwiftUI에서 이미지의 너비와 높이를 설정하는 방법은 무엇입니까?

  17. 17

    js에서 이미지 객체의 높이와 너비를 설정하는 방법

  18. 18

    버튼 또는 하이퍼 링크를 사용하여 데이터베이스에 저장된 이미지를 호출하는 방법

  19. 19

    matplotlib를 사용하여 지정된 너비와 높이로 텍스트를 그리는 방법이 있습니까?

  20. 20

    PowerPoint에서 LoadImage ()의 너비와 높이를 지정하는 방법

  21. 21

    속성을 사용하는 대신 외부 스타일 시트를 통해 이미지의 너비 / 높이를 제어하는 방법은 무엇입니까?

  22. 22

    IPython.display : 표시된 이미지의 너비, 높이 및 해상도를 변경하는 방법

  23. 23

    jquery를 사용하여 선택한 이미지의 소스를 얻는 방법

  24. 24

    Laravel 4.1, 함수 내에서 이미지 높이와 너비를 비교하는 방법

  25. 25

    이미지 너비와 높이를 비디오 태그에 상속하는 방법

  26. 26

    그리드를 사용하여 텍스트와 이미지 옆에 버튼이있는 방법

  27. 27

    내 앱이 기기에서 느리게 실행되는 이유는 내가 사용하는 이미지와 하드 코딩 된 너비와 높이를 제거하는 방법 때문입니다.

  28. 28

    CSS를 사용하여 버튼과 이미지를 한 줄로 표시하는 방법

  29. 29

    SwiftUI에서보기 또는 화면의 높이와 너비를 얻는 방법

뜨겁다태그

보관