我的問題是我有一個主屏幕,我想用按鈕單擊動態產生一個視圖,然後將主視圖從屏幕上滑開它下面的視圖。我已經完成了這一點,但我覺得有一個更好的方法。我做這件事的方式非常有限,因爲你不能一次又一次地在主體下產生視圖。Android:在視圖下膨脹視圖,然後將頂部視圖關閉
我主要的XML文件看起來像這樣:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<RelativeLayout
android:id="@+id/subpage"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
</RelativeLayout>
<RelativeLayout
android:id="@+id/homescreen"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/homebg"
>
</RelativeLayout>
</RelativeLayout>
</RelativeLayout>
我已經刪除了一些不必要的東西。這是重要的。注意主佈局的第一個孩子是一個ID爲「subpage」的相對佈局。因爲我使用java來在點擊一個按鈕時將另一個佈局充填到子頁面佈局中,然後我將屏幕上的「主屏幕」佈局設置爲動畫。似乎我不應該預先聲明子頁面。我想我的問題是,有沒有辦法在現有佈局下動態聲明新的子佈局?
============================================== =========================
編輯:問題的第2部分
我試圖使用addView和應用程序崩潰。這是我用來嘗試添加視圖並將我的xml充入其中的代碼。在下面的代碼是一個ViewGroup,因爲據我所知,你只能膨脹到ViewGroups,而不是普通的意見。此外,「活動」在課程頂部定義爲「私人活動活動=此」。任何想法可能導致崩潰?
btnHelp.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
subView = (ViewGroup)new View(getApplicationContext());
mainScreen.addView(subView,1);
LayoutInflater inflater = activity.getLayoutInflater();
inflater.inflate(R.layout.help, subView);
}
});
=========================================== ============================
編輯:問題
因此多了一個問題的第3部分。一切工作都很好,只要膨脹和滑落。但是,膨脹的視圖中有一個按鈕。我試圖給該按鈕分配一個監聽器,但它似乎不起作用。我通過在我一直在研究的btnHelp中調用佈局充填器後將偵聽器添加到按鈕來完成此操作。下面的代碼:
btnHelp.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
LayoutInflater inflater = activity.getLayoutInflater();
mainScreen.addView(inflater.inflate(R.layout.help, null),0);
homeScrn.startAnimation(slideLeftOut);
btnBackHome = (ImageView)findViewById(R.id.backMenuBtn);
btnBackHome.setOnClickListener(goHome);
}
});
GOHOME是我已經低於此定義爲這樣的處理程序:
private OnClickListener goHome = new OnClickListener(){
public void onClick(View v) {
Log.d("ClickEvent: ","btnBackHome Clicked");
homeScrn.startAnimation(slideRightIn);
}
};
當我點擊通過btnBackHome引用的按鈕,它不會做任何事情。我只是不確定是否因爲監聽器實際上沒有被分配,什麼是保持實際被點擊的按鈕或其他東西。在RelativeLayout
我會試試看。 ViewFlipper不是我想要的。它有一個視圖滑落,而另一個視圖同時滑動。我期待從第二個視圖的頂部關閉一個View,基本上做一個揭示。 – LoneWolfPR 2010-10-08 13:28:32
@LoneWolfPR:啊,對不起,我對'ViewFlipper'建議的錯誤。 – CommonsWare 2010-10-08 14:00:06
我正在嘗試添加視圖,但它給我帶來了問題。你可以看看我對原始文章所做的修改,看看有沒有什麼可以看到它的錯誤?謝謝。 – LoneWolfPR 2010-10-08 15:04:04