먼저이 사이트를 몇 년 동안 읽었으며 여러 번 묶어 두었습니다. 여기에 기여한 커뮤니티에 감사 드리며 잘하면 당신은 내 자신의 문제로 나를 도울 수 있습니다.Java Android : 표시하기 전에 UI 전처리
저는 회사에서 안드로이드 개발을 시작하고 Windows Mobile C#에서 기존 응용 프로그램을 Android Java로 이식하려고 시도하고 있습니다. 그것의 대부분은 순조롭게 진행되고 있지만, 난 어려움을 겪고있는 부분 중 하나가 UI입니다.
Windows Mobile 응용 프로그램은 WinForm을 만들 때 파일에서 측량 사양을 읽습니다. 닫힌 질문 (예 : 객관식)의 경우, 해당 사양의 각 해당 답변에 대해 CheckBox 또는 RadioButton 컨트롤을 화면에 채워야합니다. 필요한 레이아웃과 컨트롤을 만들면 문제는 없지만 화면이 스크롤되지 않아야합니다. 이 때문에 우리의 소프트웨어는 디스플레이되기 전에 오버 플로우 (즉, 디스플레이에 사용 된 1-4 열)없이 사용 가능한 화면 공간 내에서 최상의 적합성을 계산할 수 있어야합니다.
내 UI를 작성했습니다 (적어도 레이아웃)를 XML 리소스 또는 Java 코드로 사용하지만 onCreate()에서 GetWidth() 및 GetHeight()와 같은 메서드가 0을 반환하기 때문에 필자는 아직이 사전 처리를 추가 할 수 없었습니다.
이 모든 것은 화면에 표시되기 전에 발생해야합니다. 누구든지 올바른 방향으로 나를 가리킬 수 있다면, 나는 대단히 감사 할 것입니다.
감사합니다. Simon! 지금 측정 값을 읽을 수는 있지만,이 반복을 어떻게 만들 수 있는지는 여전히 확신 할 수 없으므로 적합성을 테스트 할 수 있습니다. 그래서 20 가지 가능한 답을 가진 설문 조사 질문이 있다고 가정 해 봅시다. 내 응용 프로그램은 먼저 해당 내용을 단일 열 목록에 넣으려고합니다. 따라서 응답을로드하고 GlobalLayoutListener에서 측정하여 화면 공간을 오버 플로우시킬 것으로 판단하면 앱을 재설정하고 대신 2 열을 사용하여 다시 표시해야합니다. 일을 더욱 복잡하게 만들려면 답안 텍스트가 싸여있을 수 있으므로 개별 답변의 높이는 정적이지 않습니다. –
필자는 목록을 말하면 RadioButtons 또는 CheckBox로 채워진 LinearLayout을 의미합니다. –
리스트 또는 스크롤 뷰를 사용하는 경우 선형 레이아웃과 내용 만 스크롤되므로 모든 내용의 크기를 조정하여 그 안에 들어갈 수 있도록하는 방법이 있습니다. 그래서 두 가지 질문이 남아 있습니다. 당신은 이미 안드로이드 뷰에 적용하는 방법 - 프로그래밍 방식으로 LayoutParams를 검색하는 방법, 텍스트를 측정하는 방법입니다. 가장 좋은 해결책은 맞춤 클래스를 사용하여 textView를 확장하고 onMeasure() 및 onDraw()를 재정의 한 다음 onDraw()에서 텍스트의 길이를 측정하는 몇 가지 기술. 측정 후에는 requestLayout을 호출하여 부모가 다시 측정해야 하는지를 알게되면 onMeasure()가 다시 호출됩니다. – Simon