2016-06-09 3 views
1

나는 거의 모든 내 활동에 사이드 메뉴가있는 안드로이드 애플 리케이션을 가지고있다. 이를 위해 서랍 레이아웃과 일관된 UI를위한 몇 가지 다른 항목이있는 xml 활동을 수행해야합니다. 예를안드로이드 XML에서 코드 중복을 피하는 방법

<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <include layout="@layout/toolbar" 
      android:id="@+id/toolbar_container"/> 

     <<--ACTIVITY_XML-->> 

    </RelativeLayout> 
</android.support.v4.widget.DrawerLayout> 

를 들어 또 다시 코드를 복사 할 수있는 방법이 있습니까.

내가 편도로 생각하면, <<--ACTIVITY_XML-->>을 포함 태그로 바꾸십시오. 그럼 내 기본 활동에서 setContentView()을 오버라이드하고, 위에서 언급 한 기본 레이아웃을 부 풀린 다음 내부에 포함 태그를 부 풀린다. 메모리와 시간 활용면에서이 방법이 좋든 나쁨이든.

+0

include 및 merge 태그에서 모두 검색 더 나은 최적화를 위해 모두 사용 –

+0

공통 UI 요소와 서랍이있는 기본 컨테이너로 1 활동을 사용할 수 있으며 그 활동에서 단편 대체를 사용하는 것이 좋습니다. – Yazan

답변

1

이 두 방법은 다음과 같습니다

  1. 재정의 수퍼 활동 클래스 된 setContentView 및 코드에서 루트 레이아웃 인스턴스 활동 레이아웃을 부풀려.
  2. 모든 활동 레이아웃에서 성능 최적화를 위해 merge 태그 외에 태그를 포함하여 태그를 사용하십시오.

개인적으로, 내 앱에서는 루트 레이아웃을 복사하는 각 활동에 대해 하나의 레이아웃을 유지하면서 모든 활동에 툴바를 삽입하려면 setContentView를 대체하는 것이 좋습니다.

어쩌면 코드를 중앙 집중화하기 위해 사용자 정의 액티비티 xml을 부 풀리는 '루트'레이아웃을 사용하는 것이 더 나을 것입니다. 그러나 앞으로 예를 들어 한 활동에 대한 서랍을 제거하려는 경우이를 관리해야합니다.

+0

두 번째 방법을 한 번 설명해 주실 수 있습니까? 서랍이 하나의 액티비티를 위해 존재하지 않는다는 것에 대해, 저는 baseActivity, sideBarActivity라는 두 개의 baseActivities를 만들었습니다. 하지만 sideBarActivity에 대해서도 툴바와 유사한 것들에 약간의 변경이있을 수 있습니다. 그 해결책이 있습니까 – DarkCoderRises

+0

두 번째 접근법을 사용하려면 include 및 merge를 사용하여 각 활동의 코드를 복사해야하지만 원하는 것을보고 싶지는 않습니다. . 2 개의 기본 활동이 이미있는 경우 서랍 표시가 완벽 해집니다. 첫 번째 접근법을 사용하면 코드에서 비정상적으로 커스텀 활동 레이아웃을 가진 두 가지 다른 루트 레이아웃을 갖게됩니다. 메모리가 의심 스러울 때 이것은 다른 코드 구성 일 뿐이며 코드 작성이 잘되면 성능에 영향을 미치지 않습니다. – lubilis