Android Studio preview 가 고정 되 지 않 고 흔히 볼 수 있 는 문제 해결 방법

5857 단어 AndroidStudiopreview
Android Studio 는 레이아웃 파일 이 사용자 의 장치 에 어떻게 나타 날 지 미리 볼 수 있 는 강력 한'Preview'도 구 를 제공 합 니 다.XML 레이아웃 은 안 드 로 이 드 개발 에서 가장 많이 사용 되 는 자원 일 수 있 습 니 다.프로젝트 의 모든 활동 에 최소한 하나의 레이아웃 파일 이 있 습 니 다.Android Studio 의 미리 보기 도 구 는 이러한 위대 한 디자인 을 실현 하고 빠르게 교체 할 수 있 으 며 프로그램 을 실행 할 필요 가 없습니다.세로 또는 가로 모양 이나 TextView 가 여러 언어 환경(예 를 들 어 영어,독일어,그리스 어)에서 의 모양 등 레이아웃 의 다른 설정 을 볼 수 있 습 니 다.
미리 보기 도구 가 강하 더 라 도 당신 의 발전 날 짜 를 쉽게 할 수 있 습 니 다.이 동시에 프로그램 원숭이 를 미 치 게 하 는 단점 도 있 습 니 다.이 글 은 프 리 뷰 의 흔 한 문제 와 기 교 를 다룬다.
얼마 전에 AndroidStudio 를 사용 해서 어떤 단 추 를 잘못 눌 렀 는 지 모 르 겠 습 니 다.preview 보기 창 은 한쪽 에 고정 되 어 있 지 않 습 니 다.xml 인 터 페 이 스 를 클릭 하면 preview 창 이 숨겨 져 개발 이 불가능 합 니 다.찾 아 보 니 설정 에 docked mode 속성 이 없습니다.

docked mode 속성 없 음
인터넷 에서 많은 자 료 를 찾 아서 야 해결 되 었 다.방법 은 다음 과 같다.
  • preview 를 클릭 하여 보기 창 을 표시 합 니 다.
  • 메뉴 표시 줄 의 윈도 우 를 클릭 하 십시오.
  • 활성 도구 창 선택;
  • Docked Mode 선택;

  • 조작 하 다.
    여 기 는 가장 흔히 볼 수 있 는 Preview 에 대한 문제 목록 과 해결 방안 입 니 다.(그림 은 오른쪽 단 추 를 누 르 면 새 탭 으로 확대 해서 보십시오.)
    질문 1:Preview 가 비어 보 입 니 다.
    레이아웃 이 있다 고 가정 하면 그 내용 은 백 엔 드 에서 얻 은 데 이 터 를 채 울 것 입 니 다.내용 이 동적 이기 때문에 미리 보기 도구 가 화면 을 채 울 수 없고 아무것도 볼 수 없다 는 것 을 곧 깨 닫 게 될 것 입 니 다.이 문제 에 대한 비교적 간단 한 해결 방안 은 실제 컴퓨터 에서 테스트 하 는 것 이다.그 때 는 이런 데 이 터 를 가지 고 있 었 지만 이렇게 Preview 의 의 미 는 잃 어 버 렸 다.

    이런 상황 에서 문 제 는 TextView 와 ImageView 가 표시 할 내용 이 없다 는 것 이다.이것 은 동적 내용 을 처리 할 때 흔히 볼 수 있 는 문제 다.코드 컴 파일 에 문제 가 없 더 라 도 XML 코드 를 보지 않 고 이 레이아웃 을 이해 할 수 있 는 사람 은 없다.
    모든 백 엔 드 데이터 와 관련 된 보 기 를 사용 하 는 레이아웃 을 만 들 때 미리 볼 때 만 채 우 는 것 이 좋 습 니 다.안 드 로 이 드 가 아 닌 tools 네 임 스페이스 를 사용 하여 xml 속성 을 설명 합 니 다.미리 볼 때 만 사용 할 속성 을 지정 할 수 있 습 니 다.예 를 들 어 우 리 는 tools:text="Title"과 tools:src="@drawable/cool 을 사용 합 니 다.pic",큰 성 과 를 거 두 었 습 니 다!
     
    tools 접두사 로 설명 하 는 속성 은 안 드 로 이 드 와 같 지만 미리 보기 에 만 사 용 됩 니 다.Android:text 가 아 닌 tools:text 를 사용 하면 모든 내용 이 미리 볼 때 만 나타 나 고 프로그램 이 실 행 될 때 모든 tools 와 관련 된 것 이 나타 나 지 않도록 합 니 다.
    모든 ImageView 가 요구 하 는 너비 와 높이 에 맞 는 그림(jpg 등)이 충분 하지 않 으 면 무슨 일이 일어 날 까요?당신 은 디자인 사자 에 게 각종 적합 한 조합 을 테스트 할 수 있 는 자원 을 제공 할 수 있 지만,이것 은 추가 적 인 노력 과 유지 가 필요 할 수 있 습 니 다.이때 도 tools:rcs 또는 tools:layot 를 사용 할 수 있 습 니 다.height 와 tools:layotwidth 는 디 스 플레이 효 과 를 테스트 합 니 다.실제 속성 을 수정 할 필요 가 없습니다.
    질문 2:최대 너비 측정
    또는 외부 원본 에서 온 내용 을 표시 하기 위 한 레이아웃 이 있 을 때 최대 너비 나/높이(즉,max Height 속성 을 사용)를 요구 하여 레이아웃 이 아름 답 게 보이 도록 합 니 다.외부 원본 이 예상 보다 크 거나 동의 되 지 않 은 그림 보다 넓 게 보 내 더 라 도.이 때 tools:layot 를 사용 할 수 있 습 니 다.height 와 tools:layotwidth,그리고 고정된 색상 의 toos:background 를 설정 하여 각 사이즈 의 그림 이 ImageView 에서 사용 할 수 있 는 공간 을 미리 볼 수 있 습 니 다.

    질문 3:손 상 된 미리 보기 복구
    다음 그림 에서 보 듯 이 오류 가 자주 발생 합 니 다.사용자 정의 View 를 만 들 때 미리 보기 기간 에 존재 하지 않 을 수 있 는 외부 의존 항목 을 사용 하지 않 고 보 기 를 예화 할 수 있 도록 해 야 합 니 다.미리 보 기 는 프로그램 에서 실행 되 지 않 고 IDE 의 JVM 에서 실 행 됩 니 다.이것 은 안 드 로 이 드 장치 에서 의 작업 원 리 를 모 의 할 것 입 니 다.View 프레임 워 크 에 의존 하지 않 는 수량 에 접근 할 수 없다 고 가정 해 야 합 니 다.글 라 이 드 와 같은 이미지 로 더 를 사용 하 는 것 은 불가능 합 니 다.같은 이유 로 모든 의존 주입 프레임 워 크 는 작 동 하지 않 습 니 다.미리 보기 컨 텍스트 에서 초기 화 되 지 않 아 보기 가 확장 되 었 을 때 이상 을 던 집 니 다.

    이 경우 View.isInEditMode()를 사용 할 수 있 습 니 다.미리 보 기 를 하고 있 는 지 확인 하고 Preview 에서 사용 할 수 없 는 의존 도 를 건 너 뜁 니 다.
    
    public ImageWithCaptionView(Context context, AttributeSet attrs) {
      super(context, attrs);
      if (!isInEditMode()) {
       ArticlesApplication.getInjector().inject(this);
      }
    }
    질문 4:merge 레이아웃 중첩
    merge 탭 은 레이아웃 코드 의 중복 을 줄 이 는 데 도움 을 줄 수 있 습 니 다.
    그러나 merge 의 문 제 는 내부 의 모든 구성 요소 가 접 혀 미리 보기 에 표시 되 어 시각 적 혼란 을 초래 한 다 는 것 이다.아래 그림 에서 보 듯 이 TextView 는 ImageView 위 에 덮어 씁 니 다.

    도구:tools:showIn="layot"를 사용 하여 기 존 레이아웃 의 내용 을 표시 할 수 있 습 니 다.여러 곳 에서 서로 다른 부모 레이아웃 을 사용 하면 하나의 레이아웃 만 선택 하여 미리 볼 수 있 습 니 다.
    Android Studio 2.2 부터 도 구 를 사용 할 수 있 습 니 다:parentTag="LinearLayout"예 를 들 어 렌 더 링 레이아웃 을 LinearLayout 로 사용 할 수 있 습 니 다.아래 그림 은 사용 후의 효과 입 니 다.더 이상 중첩 되 지 않 습 니 다:

    질문 5:미리 볼 때 숨겨 진 보기 보이 기
    당신 의 활동 은 onCreate 에 숨겨 야 할 View 를 포함 할 수 있 지만,일부 사건 후에 표 시 됩 니 다.이 보기 들 이 레이아웃 에 있 는 visibility:"GONE"를 설정 하면 미리 볼 때 보이 지 않도록 할 수 있 습 니 다.
    문 제 는 이 보기 들 이 미리 보기 에서 사라 집 니 다.다른 개발 자 들 이 레이아웃 을 열 고 미리 보기 에서 찾 으 면 찾 을 수 없습니다.화면 에 무슨 일이 일 어 났 는 지 알 아 보 는 데 더 많은 정력 과 시간 이 필요 하기 때문이다.
    tools:visibility="visible"속성 을 사용 하여 미리 보기 패 널 에 만 표시 할 수 있 습 니 다.
    질문 6:ListView 의 Item 과 Header/Footer 미리 보기
    tools:listitem/tools:listheder/tools:listsfooter 를 사용 하면 미리 보기 에서 item,header,footer 를 추가 하 는 효 과 를 실현 할 수 있 습 니 다.예 를 들 면:
    
    <ListView xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:id="@android:id/list"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     tools:listitem="@layout/sample_list_item"
     tools:listheader="@layout/sample_list_header"
     tools:listitem="@layout/sample_list_footer" />
    이 기능 은 AS 2.2 에 bug(무효)가 있 고 2.3 에서 복 구 됩 니 다.
    본 고 는 대부분https://www.novoda.com/blog/layout-preview-101/에서 번역 되 었 고 실제 상황 에 대해 소량의 수정 을 하여 문 제 를 보충 했다.

    좋은 웹페이지 즐겨찾기