●實作練習:預期畫面
●實作練習:補充說明
(一)利用merge來簡化UI,以此例來說,在merge時不用再加入padding和orientation,因為最外層的linearlayout已經加入,但在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/merge只要設定一次id,所以同一個layout可以用在三個不同的activity中,如此例有三個題目但都共用一個activity_q.xml的layout
setContentView(R.layout.activity_q);
(四)textview中加入html網頁語法
=>網頁特殊符號用法可以參考下列網址
ex:
\"=>表示 "
\U00A0=>表示空白(跟萬國碼的space不同)
<=>表示<
>=>表示>
(五)要在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):問答小學堂
文章標籤
全站熱搜
留言列表