2009-12-22 6 views
0

iPhone의 UITabBar와 비슷한 컨트롤을 만들 필요가 있습니다.이 컨트롤은 내 응용 프로그램의 모든 활동에 표시됩니다. UITabBar는 본질적으로 TAB과 같은 탭을 표시하는 배터리입니다. 모든 버튼은 활동에 매핑됩니다. 나는 이것을위한 두 가지 해결책을 가지고있다.
1. 모든 활동에 대한 레이아웃 XML에 <LinearLayout><Button/><Button/><Button/></LinearLayout> 요소를 삽입한다. 그런 다음 버튼 클릭을 처리 할 공통 리스너 클래스를 만듭니다. 따라서 모든 활동에는이 수신기의 인스턴스가 있습니다.
2. LinearLayout 클래스를 확장하는 사용자 정의 위젯을 만들려면 모든 버튼을 정적 멤버로두고 버튼 클릭을 처리하게합니다. 이 사용자 정의 컨트롤을 모든 화면에 포함 시키십시오.사용자 정의 컨트롤 만들기 또는 단추를 인라인으로 만들기

따라야 할 접근법을 잘 모릅니다. 제발 조언.
첫 번째 방법의 문제 :

1. 보일러 플레이트 코드 (findViewByIds, setOnClickListener 등)
이 많이 생성을 대안은 다음 내가 이것에 대해 생각입니다

감사. 5 개 활동과 3 개 탭 버튼이 될 것입니다 런타임에 생성 버튼 객체의 총 개수가 있다고 가정하면 5 × 3 = 15

나는 두번째 접근을하고 싶은 이유는
1. 모든 코드 (상태 및 동작)는 위젯 클래스에 의해 캡슐화됩니다. 상용구 코드가 적습니다.
2. 버튼은 정적 멤버이므로 런타임에 생성 된 Button 객체의 총 수는 3 개입니다. 하지만 정적 멤버는 JVM이 클래스를 언로드 할 때까지 더 오랜 시간 동안 메모리에 남아있게됩니다. 제어가 모든 화면에 나타나기 때문에 이것이 용인 될 수 있다고 생각합니다.

감사합니다.

답변

0

불행히도 UITabBar처럼 보이도록 내장 TabWidget을 사용자 정의 할 수있는 방법을 찾지 못했습니다. 그래서, 커스텀 콘트롤을 만들고 Buttons를 정적 멤버로 사용하려고합니다 (두 번째 접근법을 취하십시오). 컨트롤이 예상대로 클릭을 처리합니다.
수상 경력이있는 Plink Art 애플리케이션에도 iPhone UITabBar와 유사한 탭 컨트롤이 있습니다.

1

Android에서 기존 TabWidget 구현을 사용하지 않는 이유는 무엇입니까?

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

뿐만 아니라 자신의 위젯 추가 작업을 구현, 그것은 플랫폼에서 다른 애플 리케이션과 비교했을 때 장소에서 느낄 가능성이 높습니다.

특히

, 여기에 몇 가지 문제가 내가 볼입니다 :

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

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

+0

내가 말했듯이, 나는 TabBar를 에뮬레이션해야한다. 불행히도, 여기에 어떤 것을 지시하거나 묻는 것은 제 통제가 아닙니다. 필자는 내장 된 TabWidget의 모습이 iPhone의 TabBar처럼 보이도록 사용자 정의 할 수 있다고 생각하지 않습니다. 분명히, 사람들은 응용 프로그램이 다른 응용 프로그램과 다른 것처럼 보이는지 상관하지 않습니다. 두 번째 포인트는 적절한 인 텐트 플래그 (Reorder to front, Clear top 등)를 사용하여 어느 정도 처리 할 수 ​​있다고 생각합니다. 나는 그것이 다소 복잡 할 것이다라고 말해야한다. – Samuh

관련 문제