2013-10-11 3 views
1

내 활동의 모든 레이아웃에 포함되도록 menuView.xml 레이아웃을 만들었습니다. 나는 다른 레이아웃이 방법이 레이아웃을 삽입다른 레이아웃을 사용하기 위해 레이아웃 크기 조정

ComposeView http://img845.imageshack.us/img845/2121/d6zp.png

:이 레이아웃은 하나의 각 국경에 열이 같은 제목 표시 줄을 가지고

<!-- Show menu --> 
<com.example.MenuView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

그러나 레이아웃 중 하나가있는 경우 전체 이 뷰의 일부분은 MenuView에 의해 덮여있다.

MenuView 내부의 빈 공간에이 뷰의 크기를 적용하려면 어떻게해야합니까?

업데이트 - 전체 XML 여기서 발생이 2 개 상대 레이아웃이 MenuView (가장 어두운 GRE 테두리 상단 검은 색 막대)에 의해 덮여 얻을 무엇

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    android:background="@drawable/degradado"> 


    <!-- Show menu --> 
    <com.example.MenuView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 


    <RelativeLayout 
     android:id="@+id/Left_layout" 
     android:layout_width="fill_parent"   
     android:layout_height="fill_parent" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentBottom="true" > 

    //Here go buttons, views, etc... 

    </RelativeLayout> 

    <RelativeLayout 
     android:id="@+id/Right_layout" 
     android:layout_width="fill_parent"   
     android:layout_height="fill_parent" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentBottom="true" > 

    //Here go buttons, views, etc... 

</RelativeLayout> 

을 포함하고, 이상적인 방법은이 2 개의 레이아웃이 빈 공간 (가장 선명한 회색)에 맞춰지는 것입니다.

이 설정 여백 크기를 상대 레이아웃에 맞춰 해결할 수 있지만이 방법이 가장 좋은 방법은 아닌 것을 알고 있으므로 다른 방법이 있는지 잘 모릅니다.

+0

죄송합니다. 내 안드로이드에 대한 지식으로는이 작업을 수행 할 수있는 더 좋은 방법을 찾을 수 없습니다. 쓸모 없기 때문에 옛 대답을 지울거야. 누군가가 곧 답변을 게시하기를 바랍니다. –

+0

괜찮습니다. 도움을 주셔서 감사합니다. – masmic

답변

0

난 당신의 문제를 해결하는 가장 좋은 방법은 상속과 생각합니다. 콘텐츠를 추가 할 모든 활동에 대한 템플리트로 사용할 수있는 활동을 정의한 경우. 그런 다음

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent"  
tools:context=".ActivityWithMenu" > 
<TextView 
    android:layout_width="match_parent" 
    android:layout_height="20dip" 
    android:background="#ff000000" 
    android:textColor="#ffffffff"  
    android:text="Main Menu Title Bar" 
    android:id="@+id/mainmenutitle" /> 
<LinearLayout 
    android:layout_width="20dip" 
    android:layout_height="match_parent" 
    android:layout_below="@+id/mainmenutitle" 
    android:layout_alignParentLeft="true" 
    android:background="#ff999999" 
    android:orientation="vertical" 
    android:id="@+id/lefthandmenu" /> 
<LinearLayout 
    android:layout_width="20dip" 
    android:layout_height="match_parent" 
    android:layout_below="@+id/mainmenutitle" 
    android:layout_alignParentRight="true" 
    android:background="#ff999999" 
    android:orientation="vertical" 
    android:id="@+id/righthandmenu" /> 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_toLeftOf="@+id/righthandmenu" 
    android:layout_toRightOf="@+id/lefthandmenu" 
    android:layout_below="@+id/mainmenutitle" 
    android:orientation="vertical" 
    android:id="@+id/activitycontent" 
    /> 
    </RelativeLayout> 

:

public class ActivityWithMenu extends Activity 
    { 
     @Override 
     protected void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_with_menu_layout); 
     } 
    } 

와 XML :

코드와 기본 작업 만들기 : 난 당신이 사용자 정의 메뉴가 있지만 간단한 예로서 '만들어진'무슨 모른다 특정 활동 (이 경우에는 간단한 'Hello World'레이아웃)을위한 XML을 만드십시오.

<?xml version="1.0" encoding="utf-8"?> 
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:scrollbars="vertical" > 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 
    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#ff00ff00" 
     android:text="Hello World!" 
     /> 
</LinearLayout> 
    </ScrollView> 

하지만 지금이 활동에 대한 코드를 작성할 때, 대신 직접 액티비티 클래스의 'ActivityWithMenu'를 확장하고 다음과 같이 XML 레이아웃을 부풀려 :

public class Activity1 extends ActivityWithMenu 
    { 
     @Override 
     protected void onCreate(Bundle savedInstanceState) 
     { 
      requestWindowFeature(Window.FEATURE_NO_TITLE); 
      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  
        WindowManager.LayoutParams.FLAG_FULLSCREEN);  

      super.onCreate(savedInstanceState); 

      LinearLayout ll = (LinearLayout)findViewById(R.id.activitycontent); 

      ScrollView sv = (ScrollView)this.getLayoutInflater().inflate(R.layout.activity1_layout, ll, false); 

      ll.addView(sv); 
     } 
    } 

내가 여기 전체 화면 활동을 만드는 대신에 코드를 추가 한 부모 ActivityWithMenu 클래스는 모든 것을 그런 식으로 표시하는 것을 원하지 않는다고 가정하지만 적절한 경우 상위 클래스로 이동할 수 있습니다.

희망이 도움이됩니다.

+0

나는 lateralals와 커스텀 타이틀 바의 버튼으로 2 개의 열로 구성된 메뉴를 준비하지 않은'menu_view'라는 레이아웃을 가지고 있습니다. 그런 다음, 모든 버튼의 onClickListeners를 정의하는 'menuView'라는 클래스도 있지만이 클래스는'RelativeLayout을 확장합니다.여기서는 레이아웃 인플레이터를 사용하고 다른 레이아웃에이 메뉴를 삽입하기 만하면 원하는 레이아웃에서 간단히 정의 할 수 있습니다. 이 메뉴 클래스를 액티비티로 확장한다고 말하지만, 현재이 메뉴 클래스는 내가하는 일과 호환 가능합니까? – masmic

+0

나는 약간의 재 구조 후에 왜 안 보이지. 만약 당신이 '왼쪽 메뉴'/ '오른손 메뉴'를 버튼의 열에 대한 레이아웃 XML과 'mainmenutitle'에 제목 xml으로 변경하면, 'toLeftOf'와 같은 정렬 속성을 남겨두면 같은 것을 표시해야합니다. 그리고 onClickListener 셋업을 부모 클래스의 onCreate로 옮깁니다. (예를 들어, 'ActivityWithMenu') 그런 식으로 한 곳에서만 필요합니다. 나는 모든 활동을 임시로 복잡한 인터페이스 제어를 오버레이하려고 시도하는 것이 아니라 이런 식으로하는 것이 더 쉬울 것이라고 생각한다. – Matt

+0

마침내 이런 식으로 시도했지만 한 가지 문제가 있습니다. 오류가 발생하고 Logcat에서 오류가 "ActivityWithMenu"레이아웃을 부 풀릴 때라고합니다. "ScrollView sv = (ScrollView) this.getLayoutInflater(). inflate (R.layout.activity1_layout, ll, false);"에서 오류가 발생합니다. – masmic

관련 문제