㈠ android 如何多層嵌套布局
先 <include layout="@layout/鏈彎遲another_layout" /> 這個布局 然後在 another_layout這個布局裡面寫上這個布局的id 並且設置可見屬性為棚李 GONE ,然後比如你是通過按鈕來顯示的話,你就在按鈕點擊的時候,把another_layout 的可見屬性設置鬧沖為VISSABLE
當然還有其他的實現方式,這種是比較簡單的
㈡ android 布局嵌套過多會不會造成內存泄漏
嵌套過多不會造成內存泄露,只會是在載入布局文件的時候反應慢。層次越多載入越慢,反之則越快。
㈢ android studio嵌套布局怎麼弄
首先activity_main採用的是RelativeLayout布局方式,橋唯然後通過include標簽引入一個LinearLayout的布局文件。
建一個xml文件,取名twobtn.xml,內容如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="鎮消慧http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<Button android:layout_width="0sp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="@string/equal"/>
<Button android:layout_width="0sp"
android:layout_weight="御答1"
android:layout_height="wrap_content"
android:text="@string/clear"/>
</LinearLayout>
注意以上代碼中的android:layout_weight屬性。
然後在主layout文件中加入以下代碼
<include
android:id="@+id/btn" layout="@layout/twobtn"
android:layout_below="@id/theTextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="0sp"
android:layout_marginRight="0sp"/>
㈣ android一個布局被強嵌套在別的布局裡怎麼解決
Accessibility
由於部分安卓用戶在身體的問題致使他們不能看完整的屏幕或者使用觸屏,google提供了Accessibility功能和服務幫助這些用戶更加簡單地操作設備。這其中最主要的一個類就是AccessibilityService,AccessibilityService是一個系統服務,它運行在後台,並且能夠收到由系統發出的一些事件,比如通知狀態、按鈕被點擊了等等。界面中產生的任何變化都會由系統通知給AccessibilityService.這就像寬州前監視器監視著界面的一舉一動。
AccessibilityService生命周期
AccessibilityService繼承了service,他是在後台運行的。
1、AccessibilityService是系統服務,該服務完全由系統管理,並遵循已有的服務周期.
2、開啟一個服務只能由用戶在設置中打開,而關閉則只能由用戶在設置中關閉或者服務本身通過diableSelf()方法關閉
3、慎清系統綁定該服務之後,會調用onServiceConnected()方法,這個方法可以被重寫,在這里可以做一些初始化的操作.
4、在實際的操作實驗中發現,即便手動開啟該服務,在6.0以上的系統經過一段時間也會自動關閉。
在實際開發中,可以繼承AccessibilityService類,然後有選擇的實現其中的一部跡局分函數,就可以實現一些特殊的功能。
㈤ android listview 怎麼嵌套布局局
方法就是修改item布局的xml文缺毀件:
在根布局裡加上:
android:descendantFocusability="blocksDescendants"
然後在按鈕布局裡加上:
android:focusable="false"
item和按鈕都 可以點了,就OK了
下面是布局示例緩慎:
<?xml version="1.0" encoding="utf-8"?>
<擾扮敬LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:descendantFocusability="blocksDescendants"
<Button
android:id="@+id/worklog_update"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="修改"
android:focusable="false"
/>
<Button
android:id="@+id/worklog_del"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="刪除"
android:focusable="false"
/>
㈥ android 的布局文件中framelayout嵌套framelayout是什麼意思
android 的皮搜布局早局文件中framelayout嵌套framelayout是指就是在第一個framelayout中再嵌桐握雀套一個framelayout。如圖:
Layout嵌套是在復雜UI中實現布局的,比如在垂直的LinearLayout中要實現一排水平的按鈕,就可以再嵌套一個水平的LinearLayout,在水平的LinearLayout添加多個按鈕。
㈦ android 布局 嵌套多少
android 布局的話,建議是不要超過3層,因為超過了轎嘩3層就會導致過度渲染,導致界面刷陵帆春新的時尺耐候,會有卡頓的現象.
㈧ 關於Android布局你不知道的
Android常見的5個布局,我想大家一定不會陌生。LinearLayout、RelativeLayout和FrameLayout也是使用頻率較高的布局方式,做Android開發的一定使用過。
傳統的5種布局方式:
不過我的問題並不是問面試者如何使用這些基礎的布局,而是要看面試者怎麼解決布局嵌套(影響性能)和屏幕適配問題。
我們都清楚Android界面的布局太復雜,嵌套層次過深,會使整個界面的測量、布局和繪制變得更復雜,對性能會造成影響。所以我們在寫Layout文件時,也要盡量避免布局的嵌套層次過深的問題。
在怎麼解決問題之前,我們得有一個好方法先判斷當前的問題情況。Android SDK工具箱中有一個叫做Hierarchy Viewer的工具,能夠在App運行時分析Layout。
注意: 在ROOT的手機,或者是安裝開發版的ROM的手機可以直接使用Hierarchy Viewer。如果沒有Root的手機(SDK 4.1及以上),需要在你的PC端添加一個環境變數「ANDROID_HVPROTO=ddm」。
下面列舉一些面試者常使用的方式。
merge merge標簽的作用是合並UI布局,使用該標簽能降低UI布局的嵌套層次。
merge標簽可用於兩種情況:
ViewStub ViewStub標簽引入的布局默認不會inflate,既不會顯示也不會佔用位置。租腔 ViewStub常用來引入那些默認不會顯示,只在特殊情況下顯示的布局,如數據載入進度布局、出錯提示布局等。
需要在使用時手動inflate:
ViewStub在一定的程度可以起到減少嵌套層次的作用,特別是很多時候我們的程序可能不需要走到ViewStub的界面。
include 將可復用的組件抽取出來並通過include標簽使用,但<include>標簽能減少布局的層次嗎?
我認為不能。include主要解決的是相同布局的復用問題,它並不能減少布局的層次。
用RelativeLayout代替LinearLayout
很多人為了減少布局層次喜歡用RelativeLayout代替LinearLayout,不過可能達到的效果並不會很明顯。層次是減少了,但本身RelativeLayout就會比LinearLayout性能差一點。
有一些界面,比如一個圖片和一個文本的布局(ListItem常見的布局方式),可以利用TextView有drawableLeft, drawableRight等屬性,完全不需要RelativeLayout或者LinearLayout布局。
傳統的布局方式存在一定的缺陷,如RelativeLayout要兩次測量(measure)它的子View才能知道確切的高度;如果LinearLayout布局的子View有設置了layout_weight,那麼它也需要測量兩次才能獲得布局的高度。
相對於傳統的布局方式,Android官弊櫻衫方還推出了兩種新的布局方式:ConstraintLayout和FlexboxLayout。
ConstraintLayout ConstraintLayout即約束布局,在2016年由Google I/O推出。ConstraintLayout和RelativeLayout有點類似,控制項之間根據依賴關系而存在,但比RelativeLayout更加靈活。創頌帶建大型復雜的布局仍然可以使用扁平的層級(不用嵌套View Group),說的簡單些就是,再復雜的界面也可以只有2層層次。
要使用ConstraintLayout需要在build.gradle中添加相關的support庫:
使用ConstraintLayout可以有效的解決布局嵌套過多導致的性能問題,官方也對其渲染性能進行了優化,並且ConstraintLayout支持可視化的方式編寫布局。
不過學會熟練使用ConstraintLayout會需要一點時間,但這是值得的。
FlexBoxLayout 做過前端開發(CSS方面)的同學對FlexBox一定不會陌生,最近我在做微信小程序開發時也涉及到FlexBox。FlexBox(彈性布局)是w3c在2009年提出的一種新的布局方案,解決以前那種傳統css的盒模型的局限性。
Google開源了FlexboxLayout布局和前端CSS FlexBox布局具有相同的功能(肯定有不一樣的地方),但已經足夠在Android上改進布局的構建方式。
FlexBoxLayout可以理解成一種更高級的LinearLayout,不過比LinearLayout更加強大和靈活。如果我們使用LinearLayout布局的話,那麼不同的解析度,也許我們要重新調整布局,勢必會需要跟多的布局文件放在不同的資源目錄。而使用FlexBoxLayout來布局的話,它可以適應各種界面的改變(所以叫響應式布局)。
如果對前端的Flexbox不太了解的話,你還需要補一些概念,好在這些東西在網上很容易找到。
可能很多讀者會覺這樣的面試題是吹毛求疵,很多項目中哪有這么復雜的界面,根本就用不到這些優化措施。
可以說厲害的人,或者叫高手,可能只是比較多在意這些細節而已。在實踐中的經歷告訴我,很多難於解決的性能問題,並不是因為有一個影響性能的問題無法攻克,而是沒有一個明顯的制約因素,是有各種小問題一點一點堆積起來,最終積重難返。
所以,把細節做好,或者意識到細節的地方可能引發的問題,對我們解決問題是很有幫助的,不要浪費了讓你可以成長的細節。
有需要更多Android高級進階和面試資料的朋友可以私信我獲取