建立靈活的使用者介面

2021-09-09 04:14:49 字數 2853 閱讀 9377

這一節的主要內容

1、在執行時新增乙個fragment到activity

2、替換fragment

為了適應不同大小的螢幕,我們可以根據螢幕的大小動態地在不同的布局檔案中重用fragment。比如,對於在手機上,我們可能就只能顯示乙個fragment,而在平板電腦上我們就可以並列地在介面上顯示兩個fragment,以便顯示更多的資訊。

圖1.同乙個activity中的兩個fragment在大小不同的螢幕上的顯示效果。在大螢幕上,兩個fragment並列顯示。而在小螢幕上,同一時間只顯示乙個fragment,另乙個fragment當使用者需要的時候才顯示。

除了在xml配置檔案中定義乙個fragment--像上一節我們講到的使用元素--你也可以在activity執行時向他新增乙個fragment。如果你打算在activity存活的時候,改變fragment,這就很有必要。

方法中初始化fragment。

使用fragment很重要的一點是--特別是當你想要在執行時新增fragment--就是fragment必須裝在布局中的乙個容器view裡面.

下面的布局方式相對於上一節所講的不能在執行時被修改的fragment布局方式是另一種選擇。為了可以將布局中的fragment替換成另乙個,在activity中必須有乙個空的framelayout,以便作為fragment的容器。

注意下面的檔名跟上一節的布局檔案的名字一樣,但是布局檔案的路徑中沒有large限定詞,所以這個布局使用在比large尺寸更小的螢幕上的,因為螢幕的大小不足以同時將所有的fragment放進去。

res/layout/news_articles.xml:

<

framelayout

xmlns:android

=

android:id

="@+id/fragment_container"

android:layout_width

="match_parent"

android:layout_height

="match_parent"

/>

增加乙個fragment.

下面的例子展示的是怎麼向前面的布局檔案新增乙個fragment:

package

com.bang.testfragment;

import

android.os.bundle;

import

public

class mainactivity extends

fragmentactivity

//在activity的布局中建立乙個可以被替換的新fragment

headlinesfragment firstfragment = new

headlinesfragment();

//為了防止activity使用intent的方式啟動的一些特殊引數資訊被遺漏,

//我們將intent中的額外資訊作為引數傳遞給fragment

firstfragment.setarguments(getintent().getextras());

//將fragment新增到'fragment_container'的framelayout中

getsupportfragmentmanager().begintransaction()

.add(r.id.fragment_container, firstfragment).commit();}}

}

因為上面的fragment是在執行時被新增到framelayout中的--而不是在activity中的布局檔案中用元素定義的--所以activity可以將原有的fragment替換或者移除。.

注意:當你刪除或替換乙個fragment並將新增fragment事務到back stack,被刪除的其實是停止了(而不是銷毀)。如果使用者為了恢復fragment而回退,它就會重新啟動。如果你沒有將fragment事務新增到back stack中,那麼當fragment被刪除或替換的時候,它就是真的被銷毀了。

下面**展示如何用替換fragment

//

建立乙個fragment並將特定的文章資訊作為引數傳遞給它

articlefragment newfragment = new

articlefragment();

bundle args = new

bundle();

args.putint(articlefragment.arg_position, position);

newfragment.setarguments(args);

fragmenttransaction transaction =getsupportfragmentmanager().begintransaction();

//用這個新的fragment替換在fragment_container中的任何東西

//並將事務新增到back stack 中,以便使用者可以回退,恢復之前的操作

transaction.replace(r.id.fragment_container, newfragment);

transaction.addtobackstack(

null

);

//提交事務

transaction.commit();

apis去做一些高階的fragment操作。

參考鏈結

建立靈活的使用者介面

這一節的主要內容 1 在執行時新增乙個fragment到activity 2 替換fragment 為了適應不同大小的螢幕,我們可以根據螢幕的大小動態地在不同的布局檔案中重用fragment。比如,對於在手機上,我們可能就只能顯示乙個fragment,而在平板電腦上我們就可以並列地在介面上顯示兩個f...

構建靈活的介面

在設計支援各種螢幕尺寸的應用時,你可以在不同的布局配置中重複使用 fragment 以便根據相應的螢幕空間提供更出色的使用者體驗。例如,一次只顯示乙個 fragment 可能就很適合手機這種單窗格介面,但在平板電腦上,你可能需要設定並列的 fragment,因為平板電腦的螢幕尺寸較寬闊,可向使用者顯...

如何建立使用者介面?

android中的檢視和布局的定義是什麼?區別是什麼?在android系統中有哪些元素用於建立ui?如何使用布局 fragment和檢視來為activity建立ui?android sdk關於ui的介紹,可以參考 android ui的每乙個獨立元素都是使用源於viewgroup的各種布局管理器布置...