user1979727
user1979727

Reputation: 117

How to make template xml

I want to make XML template to reuse the code. The problem is that one of the template has several linearlayouts. However, when I run the app, it only shows one linearLayout. (I can only see id: manage_services. not manage_view neither manage_shows). Here is my code. I hope anyone can figure out the problem.

drawable_manage.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >



    <LinearLayout
        android:id="@+id/manage_services"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:drawableLeft="@drawable/menu_settings"
            android:text="@string/title_manage_services"
            android:textColor="#ffffff"
            android:textSize="20sp" />
    </LinearLayout>

    <View
        android:id="@+id/manage_view"
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="@color/menu_divider" />

    <LinearLayout
        android:id="@+id/manage_shows"  
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="@dimen/slide_menu_header" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:drawableLeft="@drawable/menu_settings"
            android:text="@string/title_manage_shows"
            android:textColor="#ffffff"
            android:textSize="20sp" />
    </LinearLayout>

</LinearLayout>

MainMenuActivity.java

private void addPanels(){
     LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     android.support.v4.widget.DrawerLayout parent = (android.support.v4.widget.DrawerLayout) inflater.inflate(R.layout.activity_main_menu,null);

     View layout_manage = inflater.inflate(R.layout.drawable_layout_manage, null);
     View layout_names = inflater.inflate(R.layout.drawable_layout_names, null);
     View layout_emails = inflater.inflate(R.layout.drawable_layout_email, null);
     LinearLayout leftLinearLayout = (LinearLayout)parent.findViewById(R.id.left_drawer);



     leftLinearLayout.addView(layout_names);
     leftLinearLayout.addView(layout_emails);
     leftLinearLayout.addView(layout_manage);
     setContentView(parent);
}

Upvotes: 0

Views: 128

Answers (2)

Lauren Grimes
Lauren Grimes

Reputation: 129

Are you wanting to reuse your drawable_manage.xml linearlayouts in these (i.e. @+id/manage_services, @+id/manage_shows) or do you have separate layout files?

     View layout_manage = inflater.inflate(R.layout.drawable_layout_manage, null);
     View layout_names = inflater.inflate(R.layout.drawable_layout_names, null);
     View layout_emails = inflater.inflate(R.layout.drawable_layout_email, null);
     LinearLayout leftLinearLayout = (LinearLayout)parent.findViewById(R.id.left_drawer);

Try as others suggested and change the orientation, and make sure you are trying to inflate the correct layout. Make sure you are inflating drawable_manage in the correct location and calling to the child linearlayouts by the correct ids.

Upvotes: 0

Hamid Shatu
Hamid Shatu

Reputation: 9700

Change your parent LinearLayout's orientation from horizontal to vertical.

android:orientation="vertical"

Upvotes: 1

Related Questions