您可以手動創建此佈局,但只能使用一次 - 在您的ActivityBase
類中。其他活動可以擴展這個基類。
編輯:
正如我說過的,我提高了我的答案。 所以我的想法是用菜單創建一個Activity
。如果其他Activity
需要相同的菜單,它可以擴展此ActivityBase
並添加它自己的佈局。 讓我們看一個簡單的例子。
ActivityBase
佈局:
<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=".MainActivity" >
<RelativeLayout
android:id="@+id/menu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="@android:color/black" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Button" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/button1"
android:layout_centerHorizontal="true"
android:text="Button" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button2"
android:layout_alignBottom="@+id/button2"
android:layout_alignParentRight="true"
android:text="Button" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/container"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/menu" >
</RelativeLayout>
</RelativeLayout>
正如你可以看到我創建了一個簡單的佈局,包含菜單欄和容器佈局從將要延長AcivityBase
活動。
現在ActivityBase
:
public class ActivityBase extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base);
}
}
這是一個簡單Activity
,但如果你願意,你也可以在這裏舉行菜單事件處理,如果他們是爲將要擴展這個活動是相同的。
現在讓我們在SecondActivity's
佈局看:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" >
<requestFocus />
</EditText>
</LinearLayout>
這是一個正常的佈局,沒有什麼特別的。爲了這個例子,我在那裏放了一些控件。
而且SecondActivity
類:
public class SecondActivity extends MainActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater inflater = getLayoutInflater();
inflater.inflate(R.layout.second_activity, (ViewGroup) findViewById(R.id.container));
}
}
它擴展ActivityBase
,什麼是重要的 - 它不通話setContentView
。相反,我們正在創建LayoutInflater
,並且我們在佈局中創建的container
中佈局second_activity
。
好的。那麼我可以使用這個佈局作爲我的其他活動的基礎? 您是否介意包含一個小示例或包含示例的一個資源的鏈接? (_As輔助信息:_我已經擴展了'Activity'類來創建一個定製的MyActivity,其中包含我的應用程序的每個屏幕中需要的一些實用程序。 – 2dvisio 2013-04-22 10:30:29
在這裏你有一個簡單的例子:http://sendfile.pl/307288/ActivityEx.zip – 2013-04-22 10:53:44
非常感謝檔案。我正在考慮更多關於其他人可能會覺得有用的幾行或一篇博客文章。 該鏈接是否會過期? – 2dvisio 2013-04-22 11:01:20