문제

나는 비슷한 컨트롤을 만들 필요가있다 Uitabbar 내 응용 프로그램의 모든 활동에 존재 해야하는 iPhone에서. Uitabbar는 본질적으로 a 버튼 배터리 전시 a 동작처럼 : 모든 버튼은 활동에 맵핑됩니다.

이것에 대한 두 가지 솔루션이 있습니다.

  1. 모든 활동에 대해 레이아웃 XML에서 <LinearLayout><Button/><Button/><Button/></LinearLayout> 요소. 그런 다음 버튼 클릭을 처리하는 일반적인 청취자 클래스가 있습니다. 따라서 모든 활동에는이 청취자의 인스턴스가 있습니다.

  2. LinearLayout 클래스를 확장하는 사용자 정의 위젯을 만들려면 모든 버튼을 정적 멤버로 넣고 버튼 클릭을 처리하십시오. 이 사용자 정의 컨트롤을 모든 화면에 포함시킵니다.

어떤 접근법을 따라야하는지 잘 모르겠습니다. 조언을 해주세요. 대안도 감사했습니다

다음은 위의 접근 방식에 대해 생각하는 것입니다.
첫 번째 접근 방식의 문제 :

  1. 많은 보일러 플레이트 코드를 생성합니다 (FindViewByIds, SetonClickListener 등).

  2. 5 개의 활동과 3 개의 탭 버튼이 있다고 가정하면 런타임에 생성 된 총 버튼 객체 수는 5 x 3 = 15입니다.

두 번째 접근 방식을 취하고 싶습니다.

  1. 모든 코드 (상태 및 동작)는 위젯 클래스에서 캡슐화됩니다. 덜 보일러 플레이트 코드.

  2. 버튼은 정적 멤버이므로 런타임에 생성 된 총 버튼 객체 수는 3 개에 불과합니다. 그러나 정적 멤버는 JVM이 클래스를 언로드 할 때까지 더 오랜 시간 동안 메모리에 남아있을 것이지만, 모든 화면에 컨트롤이 존재하기 때문에 이것이 변명 될 수 있다고 생각합니다.

감사.

도움이 되었습니까?

해결책 2

불행히도, 나는 Uitabbar처럼 보이도록 내장 된 Tabwidget을 사용자 정의 할 수있는 방법을 찾을 수 없었습니다. 따라서 사용자 정의 컨트롤을 만들고 버튼을 정적 멤버로 사용합니다 (두 번째 접근 방식을 사용하십시오). 컨트롤은 예상대로 클릭을 처리합니다.
수상 경력에 빛나는 Plink Art 응용 프로그램에도 iPhones Uitabbar와 유사한 탭 컨트롤이 있습니다.

다른 팁

Android에서 기존 Tabwidget 구현을 사용하는 것이 어떻습니까?

http://developer.android.com/guide/tutorials/views/hello-tabwidget.html

자체 위젯 추가 작업을 구현할뿐만 아니라 플랫폼의 다른 앱과 비교할 때 제자리를 벗어날 수 있습니다.

특히 다음은 다음과 같은 문제가 있습니다.

  1. 시스템 업데이트로 인해 탭 막대 모양이 변경되면 코드를 다시 작성해야합니다. 당신은 또한 내장 탭 바의 모양과 느낌과 정확히 일치하지 않을 것입니다. (OS X에서 Java를 생각하십시오)

  2. 사용자가 탭을 클릭 할 때마다 스택에 다른 활동이 추가됩니다. 이것은 메모리 낭비 일뿐 만 아니라 사용자가 전화기의 뒤로 버튼을 클릭 할 때마다 이전 탭으로 이동합니다. 이것이 탭 막대가 작동하는 방식이 아닙니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top