●實作練習:預期畫面

include and merge   include and merge    include and merge    include and merge    include and merge

●實作練習:補充說明 

(一)利用merge來簡化UI,以此例來說,在merge時不用再加入padding和orientation,因為最外層的linearlayout已經加入,但在merge的畫面看起來會很奇怪(如下圖),是因為有些設定放在最外層

include and merge

 

(二)使用indclude把畫面放進主要layout中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="30dp"
    tools:context="com.example.student.qnatest.q1">

    <include
        android:id="@+id/all_layout"
        layout="@layout/all_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

include and merge

 

(三)用include/merge只要設定一次id,所以同一個layout可以用在三個不同的activity中,如此例有三個題目但都共用一個activity_q.xml的layout

setContentView(R.layout.activity_q);

 

(四)textview中加入html網頁語法

=>網頁特殊符號用法可以參考下列網址
 
ex:
\"=>表示 "
\U00A0=>表示空白(跟萬國碼的space不同)
&lt;=>表示<
&gt;=>表示>
 
 
(五)要在android values/strings.xml中加入html語法,要先加上<![CDATA[.... ]]>
ex:<![CDATA[<font color="#444444">視覺</font>]]>
 
(六)在java code中要讀取values/strings中的html語法要用Html.fromHtmel()
=>要判斷android版本,因為api 24以上使用Html.fromHtml(String,int);已棄用Html.fromHtml(String);
=>api 23以下使用Html.fromHtml(String);
 
 
(七)紀錄答案採用getTag(),所以在設定文字的時候要同時設定tag,這邊利用vaules/strings有html語法,要再使用Html.fromHtml()讀取
 
setTag:
r1.setTag(Html.fromHtml(getString(R.string.q1selection1)));
r2.setTag(Html.fromHtml(getString(R.string.q1selection2)));
r3.setTag(Html.fromHtml(getString(R.string.q1selection3)));

 

getTag取得答案:

myanswer=view.getTag().toString();

 

 
(八)透過Intent的putExtra,把資料傳遞到下一個activity,第二層和第三層要把前一層的先用getIntent.getStringExtra()取得,再帶入下一層

以第三題為例:

in.putExtra("a3", myanswer);
in.putExtra("a1",getIntent().getStringExtra("a1"));
in.putExtra("a2",getIntent().getStringExtra("a2"));

 

(九)最後在結果頁也是利用getIntent.getStringExtra()取得每一題的答案再比對結果

text1 = getIntent().getStringExtra("a1");
text2 = getIntent().getStringExtra("a2");
text3 = getIntent().getStringExtra("a3");

 

*程式參考(gitHub):問答小學堂

arrow
arrow
    創作者介紹
    創作者 muchone 的頭像
    muchone

    簡單。生活。享受

    muchone 發表在 痞客邦 留言(0) 人氣()