Раздуть макет внутри LinearLayout другого макета
У меня есть этот макет:
ComposeView http://img845.imageshack.us/img845/2121/d6zp.png
2 границы (слева, справа) заполнены значками. Когда я касаюсь одного из этих значков, я получаю доступ к другим действиям. Верхняя черная полоса - это пользовательская строка заголовка.
Ясное серое внутреннее пространство - это то место, где мне нужно разместить все действия, которые есть в моем приложении. Таким образом, этот макет будет выглядеть как макет меню, который будет статичным во всех действиях.
Это макет XML:
menu_view.xml
<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="com.example.MenuView" >
<!-- Show top black custom title bar-->
<include
layout="@layout/custom_tittlebar" >
</include>
<!-- Button columns -->
<LinearLayout
android:id="@+id/lefthandmenu"
android:layout_width="85dip"
android:layout_height="match_parent"
android:layout_below="@id/title"
android:layout_alignParentLeft="true"
android:orientation="vertical"
android:background="@drawable/border_cut" >
<ImageView
... />
...
</LinearLayout>
<LinearLayout
android:id="@+id/righthandmenu"
android:layout_width="85dip"
android:layout_height="match_parent"
android:layout_below="@id/title"
android:layout_alignParentRight="true"
android:orientation="vertical"
android:background="@drawable/border_cut" >
<ImageView
... />
...
</LinearLayout>
<!-- Blank space which will contain other activities -->
<LinearLayout
android:id="@+id/activitycontent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_toLeftOf="@id/righthandmenu"
android:layout_toRightOf="@id/lefthandmenu"
android:layout_below="@id/title"
android:orientation="vertical" >
</LinearLayout>
И это класс, где определены все значки onClickListeners.
MenuView.java
public class MenuView extends RelativeLayout {
private final LayoutInflater inflater;
Context context;
public MenuViewActivity(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.menu_view, this, true);
((ImageView)this.findViewById(R.id.navButton)).setOnClickListener(launch_nav);
}
final OnClickListener launch_nav = new OnClickListener() {
@Override
public void onClick(View v) {
getContext().startActivity(new Intent(getContext(), Navigation.class));
}
};
Что ж, имея это (я не уверен, все ли в порядке, возможно я делаю что-то не так с методом надувания или что-то в этом роде), теперь нужно определить макеты других активистов, которые будут находиться внутри этого представления. Для этого я пишу:
ExampleActivity.java
public class ExampleActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout inside_menu_view = (LinearLayout)findViewById(R.id.activitycontent);
View this_layout = getLayoutInflater().inflate(R.layout.main, inside_menu_view, true);
inside_menu_view.addView(this_layout);
Но я получаю NullPointerException в этой последней строке. Итак, что-то при надувании этого фрагмента должно быть не так.