【Android】Android UI 開發_問答_2

鏈接 【Android】Android UI 開發_問答_1.

常見佈局


如何在 MainActivity.java 中設置 activity 的佈局文件

  • 在 onCreate 回調方法中
protected void onCreate(Bundle savedInstanceState) {
   setContentView(R.layout.activity_main2);
}

設計佈局文件的 Design 和 Text 模式什麼區別?

  • Design (可視化界面) 看圖 可直接拖動控件 直觀但不精確
    Text (文本界面) 看代碼

layout_toEndOf 同 layout_toRightOf 什麼區別?另一對對應的屬性是什麼?什麼區別?

  • 指定控件的末端和右邊
  • Start 和 Left,始端和左邊
    Start、End的屬性只適用於level 17以上,
    若同時出現,則Left、Right有效

如何在工程中修改工程的最小版本?

  • Gradle Scripts > build.gradle,找到 minSdkVersion,修改後面的值

水平居中和垂直居中的屬性是什麼?

  • layout_centerVertical 和 layout_centerHorizontal

線性佈局


如何新建佈局文件?佈局文件的文件名有什麼要求?

  • layout 右擊,New > Layout Resource File
    或 File > New > XML > Layout XML File
  • 後綴.xml
    文件名必須爲小寫字母、數字、_,這三種符號 (改)

線性佈局中子控件的對齊是哪個屬性?可取什麼值?

  • android:layout_gravity,表示相對於父視圖組中的對齊方式
  • left、center、right (改)

線性佈局的方向由哪個屬性決定?可取什麼值?默認值是什麼?

  • android:orientation
  • horizontal、vertical,水平、垂直
  • horizontal,默認水平方向

控件的 id 可以相同嗎?

  • 同一佈局文件中不可以,不同佈局文件中可以

線性佈局能嵌套使用嗎?怎麼用?

  • 能嵌套使用
<LinearLayout>
	<LinearLayout> ...
	</LinearLayout>	
</LinearLayout>

表格佈局


表格佈局中的錶行由哪個標籤確定?

  • TableRow,有一個是一行

TableRow 的寬度和高度屬性是什麼?默認值是什麼?

  • android:layout_widthandroid:layout_height

  • TableRow不需要設置寬度和高度,
    它的寬度一定是 match_parent,高度一定是 wrap_content,
    它其中的控件的寬度和高度均爲 wrap_content

如何確定子控件所在的列?

  • android:layout_column指定列數,從0開始
    表格佈局中,行中每列不會疊加,同列會後移

stretchColumns 屬性什麼意思?

  • 當本列的定義總長度不足屏幕寬度時,指定列拉伸以充滿屏幕

子控件如何跨列?能跨行嗎?

  • android:layout_columnSpan指定跨列的個數
  • android:layout_rowSpan指定跨行的個數 (改)

網格佈局


如何修改子控件上的文字及 id?幾種方式?

  • 直接更改 android:text 屬性的值
  • 切換到可視化界面,雙擊更改

如何跨列?需要哪兩個屬性配合?怎麼配合?

  • android:layout_columnSpanandroid:layout_gravity
android:layout_gravity = "fill"

如何跨行?

android:layout_rowSpan
android:layout_gravity = "fill"

如何設置總列數?

  • android:columnCount

子控件的位置是怎麼確定的?

  • 通過android:layout_columnandroid:layout_row確定子控件位置

一個簡單的UI


View 是什麼?ViewGroup 是什麼?他們之間什麼關係?

  • View 是用於創建用戶交互組件的小部件的基類 (基本單元),是一塊矩形區域
  • ViewGroup 對象是一種不可見的容器,可容納其他 View 控件
  • ViewGroup 繼承自 View

佈局文件中哪裏找到?佈局文件中的標籤是怎樣的結構?

  • res > layout
<bulabula>...</bulabula><bulabula /> //符合 xml 語法結構要求

在佈局文件中的標籤屬性中的“android:”是什麼?

  • 標籤屬性中 android 爲 android 的命名空間
    即是 xmlns:android=“http://schemas.android.com/apk/res/android” (改)

線性佈局是什麼意思?它的標籤名是什麼?

  • 使用單個水平行或垂直行來組織子項的佈局,其中控件按先後順序排列
  • LinearLayout

android:orientation 這個屬性是什麼意思?它可取哪些值?

  • 設置線性佈局的方向
  • horizontal、vertical,水平、垂直方向

android:layout_width 和 android:layout_height這兩個屬性是什麼意思?它可取什麼值?值的含義是什麼?

  • 指定 view 控件的寬度和高度
  • 1.具體的數值
    2.match_parent,該 view 同它的父 view 相同大小(減去父view的padding)
    3.wrap_content,剛好可以包含它的內容大小(加上該view的padding)

TextView 這個標籤是什麼?

  • 用於盛放用戶不可改其文字內容的控件 (改)

EditText 這個標籤是什麼?它同 TextView 什麼區別?它的 android:hint 屬性是什麼意思?

  • 用於盛放用戶可輸入文字的控件 (改)
  • TextView 是不可編輯的
  • 當文本域爲空的時候,缺省顯示的提示信息

Button 這個標籤是什麼?它的 android:text 屬性什麼作用?

  • 按鈕
  • 設置按鈕上的文本

所有的標籤都可以有 android:id 這個屬性,該屬性是什麼含義,一般如何定義它的值?id 的值在哪個 java 文件中定義的?

  • 該屬性定義了該 view 的唯一的標識符,通過該 id 在程序中引用該對象
  • android:id="@+id/資源名" id中最好含有它的類別及能夠表達它的含義的英文單詞
  • 編譯 app 時,SDK 工具使用 ID 名在 gen/R.java 文件中創建一個新的資源 ID 來引用 EditText 元素

string.xml 文件是什麼文件?它的文件結構是什麼樣的?什麼是鍵值對?

  • 字符串資源文件
  • <string name="...">value</string>,鍵值對形式
  • Key-Value,每個鍵對應一個值,通過 Key 尋找 Value
    對值的使用可以基由鍵來引用 (改)

android:weight 屬性什麼作用?如何讓 EditText 充滿一行中的剩餘空間?

  • 設置權重
  • 單獨給 EditText 設置 android:layout_weight= "1"

R.java這個文件裏都有什麼?這個文件能手工修改嗎?

  • R.java爲系統自動生成並管理的java文件,它裏面定義了一些內嵌的類
    內嵌類中定義了一些常量,這些常量用於代表系統中用到的資源
    在編程時,需要使用這些資源的話,我們就引用該類中的常量
  • 這個文件程序員是不能介入修改的

主題和樣式


什麼是樣式?主題是什麼?同樣式什麼聯繫?

  • 樣式,反映 view 或者 window 的外觀和格式的屬性集合
  • 主題,是應用於整個 Activity 或 app 的樣式,而不是針對某個 View
  • 主題就是把樣式應用於所有 view,包括非視圖元素

樣式文件存放在哪裏?結構是怎樣的?怎麼在佈局文件中引用樣式?

  • res > values > styles
    所有的有關樣式的定義可以從佈局文件中取出,放到 XML 樣式定義文件中
  • 根節點必須是<resource>,其中每個樣式 (style) 由 name 唯一標識,
<resources>
    <style name="CodeFont" parent="TextAppearance.AppCompat">
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textColor">#00FF00</item>
    </style>
</resources>
  • 例,樣式定義文件命名爲CodeFont,在佈局文件的TextView控件中引用
<TextView style="@style/CodeFont" />

樣式的繼承是什麼?如何繼承系統樣式?如何繼承自定義樣式?

  • 字面意思就是繼承上級的屬性,這裏指對所繼承樣式的擴展
  • 自定義 GreenText 繼承系統樣式
    <style name="GreenText" parent="@android:style/TextAppearance">
    從支持庫繼承核心應用樣式,
    相應的parent="TextAppearance.AppCompat"
    支持庫樣式通常具有與平臺樣式相似的名稱,但包含一個 AppCompat
  • 繼承自定義樣式 GreenText,
    <style name="GreenText.Large">

如果某個樣式應用到某個 view 的時候,而這個樣式中有 View 不能支持的屬性,會怎麼樣?

  • 會被忽略,只對支持的屬性起作用

怎麼設置樣式?如果將樣式設置到 ViewGroup 時,該 group 中的 view 會使用該樣式嗎?

  • style="@style/CodeFont"
  • 不會

如何設置主題?如何微調已有主題?

  • 在清單文件中的<application>標籤或<activity>標籤上應用
<application android:theme="@style/Theme.AppCompat" ... >
  • 自定義主題,最好的方法是從支持庫擴展這些樣式並覆蓋某些屬性
    繼承已有主題,通過擴展覆蓋微調
<style name="AppTheme" parent="BaseAppTheme" />

鏈接 Android UI 開發_問答_3.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章