android控制項高度
Ⅰ 如何正確獲取Android控制項的高度
Android動態改變View控制項大小的方法: 1、聲明控制項參數獲取對象 LayoutParams lp; 2、獲取控制項參數: lp = 控制項id.getLayoutParams(); 3、設置控制項參數:如高度。 lp.height -= 10; 4:、使設置生效:控制項id.setLayoutParams(lp); 例如如要把Imageview下移200px: ImageView.setPadding( ImageView.getPaddingLeft(), ImageView.getPaddingTop()+200, ImageView.getPaddingRight(), ImageView.getPaddingBottom());
Ⅱ Android中測量控制項的內部文字內容的寬、高度
在Android中,自定義View時通過Canvas繪制文字時,測量控制項內部文字內容的寬、高是關鍵步驟。本文將介紹幾種常用方法,旨在幫助開發者解決這一問題。
首先,可通過`Paint.measureText`方法測量文本的寬度。這是一個快捷方式,適用於快速獲取文本寬度信息。
其次,使用`Paint.getTextBounds`方法,可以獲得文字所在矩形區域,進而得到寬度和高度。該方法更為全面,適用於需要精確測量場景。
`Paint.getTextWidths`方法同樣提供每個字元的寬度信息,對於處理多字元文本布局問題非常有用。
通過`Paint.FontMetrics`或`Paint.FontMetricsInt`可以獲取高度。兩者主要區別在於精度,前者為float,後者為int,具體使用時需根據需求選擇。
獲取高度時,注意到兩個高度值略有不同,`height2`值略大於`height1`,以保證文本頂部和底部有足夠的留白。在實際應用中,需根據具體需求選擇合適的高度值。
此外,通過`Paint.getFontSpacing`和`Paint.getFontMetrics(null)`方法獲取高度,本質上是調用`Paint.getFontMetrics`實現的。獲取的高度值與`fontMetrics.descent - fontMetrics.ascent`計算結果一致。
`Layout.getDesiredWidth`方法用於獲取寬度信息,但在TextView布局中可能存在文字實際佔用高度與屬性`textSize`值不一致的問題。文檔中提示可通過設置`android:includeFontPadding`來控制是否包含上下空白。
總結而言,Android中測量文字內容寬、高有多種方法,開發者需根據具體需求選擇合適的方法。理解不同方法的特性和應用場景,有助於更精確地控制文字布局,提升應用界面的美觀性和用戶體驗。
Ⅲ 安卓開發·初戀 第三季之二:常用控制項的使用方法
Android 提供大量 UI 控制項,合理使用可輕松構建出色界而。本文選取常用控制項,詳細介紹其使用方法。
新建 UIWidgetTest 項目,允許自動創建活動,使用默認值。
TextView
用於顯示文本信息,已熟悉。修改 layout,定義 ID,設置寬高,可選值有:match_parent、fill_parent、wrap_content。match_parent 表示控制項大小與父布局一致,fill_parent 等效。wrap_content表示大小剛好包含內容。指定文本內容,運行程序查看效果。
使用 android:gravity 屬性指定文字對齊方式,可選值有:top、bottom、left、right、center。設置為 center,效果等同於 center_vertical|center_horizontal。重新運行,文字居中。
調整文字大小和顏色,通過 android:textSize 和 android:textColor。使用 sp 單位。運行程序,查看效果。
TextView 多功能,更多屬性查閱文檔。
Button
用於交互,可配置屬性與 TextView 類似。在布局文件中添加 Button。運行程序,顯示效果。禁用默認大寫轉換,修改屬性。為 Button 添加點擊事件監聽器,使用匿名類或實現介面。
實現監聽,運行程序,點擊按鈕。
EditText
用於用戶輸入和編輯內容。修改 layout,指定 ID,寬度高度,加入控制項屬性。運行程序,輸入內容。設置 android:hint 屬性顯示提示文本,重新運行,效果。指定 android:maxLines 屬性限制行數,超過時文本滾動,控制項不拉伸。
結合 EditText 和 Button,通過點擊獲取輸入內容,實現功能。
ImageView
展示圖片控制項。准備圖片,放置 drawable-xhdpi 目錄。在 layout 中使用 android:src 屬性指定圖片。修改代碼,動態更改圖片。運行程序,顯示圖片。
ProgressBar
顯示載入進度。修改 layout,運行程序,顯示旋轉進度條。使用 android:visibility 控制可見性,實現顯示與隱藏。指定不同樣式,如水平進度條,動態更新進度。
AlertDialog
彈出對話框,用於提示重要信息。在布局中設置標題、內容、關閉按鈕,運行程序,點擊按鈕顯示對話框。
ProgressDialog
與 AlertDialog 類似,顯示進度條,用於耗時操作。設置標題、內容、取消按鈕,運行程序,點擊按鈕顯示進度對話框。注意,設置不能取消,必須在數據載入完成後關閉對話框。
掌握常用控制項使用,還需不斷學習查閱文檔和網上資源。本書後續章節涉及新控制項,將做詳細講解。學習控制項使用,需在實踐中不斷探索。
Ⅳ 求助:android:layout
布局的介紹:
1、在4.0以前版本中一共有五種布局,都是ViewGroup的子類。分別是AbsoluteLayout、RelativeLayout、LinearLayout、FrameLayout、TableLayout。而TableLayout是LinearLayout的子類。(中文分別是:絕對布局、相對布局、線性布局、幀布局、表格布局)。
2、在2.2操作系統中將AbsoluteLayout過期。而目前TableLayout也逐漸少用。
3、在4.0之後又新增GridLayout。(GridLayout最經典的案例是計算器界面)
總之,Android中一共有六種布局。目前推薦使用RelativeLayout、LinearLayout、GridLayout三種布局。
LinearLayout:
(一)、概念:線性布局控制其中的控制項或組件橫向或縱向排列。不線性布局布局中,每一行或每一列只能放一個控制項。並且線性布局不會換行。當控制項排列到窗體邊緣,後面的控制項就被隱藏,而不會顯示出來。
線性布局的默認方向是水平方向(Horizontal)。vertical
(二)、LinearLayout的常用屬性:
1.android:orientation 定義布局內控制項或組件的排列方式
可選項:vertical 、 horizontal
2.android:layout_width 定義控制項的寬度
可選項:fill_parent / match_parent/ wrap_content/絕對數值
備註:fill_parent / match_parent的效果完全一致,都是填充整個父控制項。但是自2.2版本開始推薦使用match_parent 。wrap_content指的是該控制項的寬度正好包裹內容物。
3.android:layout_height 定義控制項的高度
可選項:fill_parent / match_parent/ wrap_content/絕對數值
備註:fill_parent / match_parent的效果完全一致,都是高度填充整個父控制項。wrap_content指的是該控制項的高度正好包裹內容物。
4.android:id 設置控制項的id。這樣就可以在R.java中自動生成相應的值,在程序中通過findViewById就可以調用。
設置id的格式為:android:id = "@+id/id的名字"
5.android:background 設置控制項的背景顏色或背景圖片
例如:android:background="#ffffff"
android:background="@drawable/圖片名稱"
【備註:】
顏色有RGB顏色格式和ARGB格式。RGB是紅綠藍三原色。而ARGB是帶alpha的三原色,即有透明度的三原色。
#FFFFFF 代表白色
#000000 黑色
#FFFFFFFF 完全不透明
#00FFFFFF 完全透明
#88FFFFFF 半透明
6.android:layout_weight 設置控制項的權重。即各控制項在水平或者垂直方向上平均分配。
備註:如果是水平方向設置權重,要將android:layout_width設置為0dp,如果是垂直方向上使用權重,要將android:layout_height設置為0dp。否則權重容易受到高度或寬度的干擾而出現偏差。
7.android:gravity 該屬性用來控制該View的內容物的位置。
如果該屬性是定義在布局節點中,則該布局中所有控制項的位置都受到這個屬性的控制。
如果該屬性出現在Button、TextView、EditText等控制項中,則用來控制這些控制項上的文字的位置。
可選項有:top、bottom、left、right、center_vertical、fill_vertical 、 center、fill等等。
【備註:】本屬性與android:layout_gravity不同。
8.android:layout_gravity 該屬性用於設置控制項相對於容器的對齊方式。
可選項有:top、bottom、left、right、center_vertical、center_horizontal 、fill_vertical 、 center、fill等等。
這些可選項中不是適用於每一種布局。在垂直線性布局中,android:gravity為bottom不起作用;而水平線性布局中,android:gravity為right不起作用。
【備註:】而本屬性是android:layout_gravity屬性,與 android:gravity 屬性不同。
(三)、LinearLayout的特有屬性:【重新歸納:去除公共屬性後的特有屬性】
1、android:orientation 布局管理器內組件的排列方式
2、android:gravity 設置布局管理器內組件的對齊方式
(四)、 LinearLayout 子元素的特有屬性:
1、android:layout_weight 子元素在 LinearLayout 中所佔的權重
2、android:layout_gravity 子元素在 LinearLayout 中的對齊方式
RelativeLayout:
(一)、概念:指按著控制項之間的相對位置來進行布局。
(二)、RelativeLayout特有屬性:
1、android:gravity 設置布局容器內子控制項的對齊方式
2、android:ignoreGravity 設置布局管理器內哪個控制項不受gravity屬性的影響
(三)、RelativeLayout子元素的特有屬性:LayoutParams
A、第一組:指兄弟控制項之間的相對位置。該組屬性的值是另一個控制項的id。
layout_toRightOf 該控制項在哪個控制項的右側
layout_toLeftOf 該控制項在哪個控制項的左側
layout_above 該控制項在哪個控制項的上側
layout_below 該控制項在哪個控制項的下側
B、第二組:指兄弟控制項之間的對齊關系。該組屬性的值是另一個控制項的id。
layout_alignRight 該控制項與哪個控制項的右對齊
layout_alignLeft 該控制項與哪個控制項的左對齊
layout_alignTop 該控制項與哪個控制項的頂對齊
layout_alignBottom 該控制項與哪個控制項的底對齊
C、第三組:指控制項與父布局之間的對齊關系。該組屬性的值是true或者false。
layout_alignParentRight 該控制項與父布局控制項的右對齊嗎?
layout_alignParentLeft 該控制項與父布局控制項的左對齊嗎?
layout_alignParentTop 該控制項與父布局控制項的頂端對齊嗎?
layout_alignParentBottom 該控制項與父布局控制項的底部對齊嗎?
layout_centerInParent 該控制項位於父布局控制項的中心位置嗎?
layout_centerVertical 該控制項位於父布局控制項的垂直中心位置嗎?
layout_centerHorizontal 該控制項位於父布局控制項的水平中心位置嗎?
GridLayout:網格布局
(一)、GridLayout布局屬性:
1、android:alignmentMode
屬性說明:設置布局的對齊模式。可以取以下值:
alignBounds -- 對齊子視圖邊界。
alignMargins -- 對齊子視圖邊距。
2、android:columnCount
屬性說明:GridLayout的最大列數
3、android:rowCount
屬性說明:GridLayout的最大行數
4、android:orientation
屬性說明:GridLayout中子元素的布局方向。有以下取值:
horizontal -- 水平布局。
vertical -- 豎直布局。
5、android:columnOrderPreserved
屬性說明: 設置該網格布局是否保留列序號。默認是true。
6、android:rowOrderPreserved
屬性說明: 設置該網格布局是否保留行序號。默認是true。
7、android:useDefaultMargins
屬性說明: 設置GridLayout使用默認的邊距。默認值是false。
(二)、GridLayout子元素的屬性:
1、android:layout_column
屬性說明: 顯示該控制項的列。例如,android:layout_column="0",表示在第1列顯示該控制項;android:layout_column="1",表示在第2列顯示該控制項。
2、android:layout_row
屬性說明: 該控制項所在行。例如,android:layout_row="0",表示在第1行顯示該控制項;android:layout_row="1",表示在第2行顯示該控制項。它和 android:layout_column類似。
3、android:layout_columnSpan
屬性說明: 列合並。即該控制項所佔的列數。例如,android:layout_columnSpan="2",表示該控制項佔2列。
4、android:layout_rowSpan
屬性說明: 行合並。即該控制項所佔的行數。例如,android:layout_rowSpan="2",表示該控制項佔2行。
5、android:layout_gravity
屬性說明:該控制項的布局方式。選項值:
top -- 控制項置於容器頂部,不改變控制項的大小。
bottom -- 控制項置於容器底部,不改變控制項的大小。
left -- 控制項置於容器左邊,不改變控制項的大小。
right -- 控制項置於容器右邊,不改變控制項的大小。
center_vertical -- 控制項置於容器豎直方向中間,不改變控制項的大小。
fill_vertical -- 如果需要,則往豎直方向延伸該控制項。
center_horizontal -- 控制項置於容器水平方向中間,不改變控制項的大小。
fill_horizontal -- 如果需要,則往水平方向延伸該控制項。
center -- 控制項置於容器中間,不改變控制項的大小。
fill -- 如果需要,則往水平、豎直方向延伸該控制項。
clip_vertical -- 垂直剪切,剪切的方向基於該控制項的top/bottom布局屬性。若該控制項的gravity是豎直的:若它的gravity是top的話,則剪切該控制項的底部;若該控制項的gravity是bottom的,則剪切該控制項的頂部。
clip_horizontal -- 水平剪切,剪切的方向基於該控制項的left/right布局屬性。若該控制項的gravity是水平的:若它的gravity是left的話,則剪切該控制項的右邊;若該控制項的gravity是 right的,則剪切該控制項的左邊。
start -- 控制項置於容器的起始處,不改變控制項的大小。
end -- 控制項置於容器的結束處,不改變控制項的大小。
Ⅳ 列舉一下android界面中一些常用控制項類型,這些控制項都有哪些屬性和行為
在Android界面開發中,常用的控制項類型包括按鈕(Button)、文本框(EditText)、文本視圖(TextView)、列表(ListView)、網格視圖(GridView)、滑動條(SeekBar)等。這些控制項能夠實現各種交互和功能展示,是構建應用程序的重要組成部分。
以按鈕為例,其主要屬性包括android:text用於設置按鈕的文字內容,android:background用於設置按鈕的背景樣式,android:onClick用於綁定點擊事件處理方法。滑動條同樣具有android:background屬性設置背景,但還包含了android:max和android:min屬性,分別定義滑動條的最大值和最小值,同時滑動條還支持android:progress屬性設置當前滑動條進度。
列表和網格視圖主要用於展示數據列表,它們分別通過android:choiceMode和android:numColumns屬性控制列表選擇模式和網格列數。列表視圖中,可以通過android:divider和android:dividerHeight屬性設置分隔線樣式與高度,網格視圖則使用android:stretchMode屬性調整網格列的填充方式。
對於文本視圖,android:text用於設置顯示的文本內容,android:gravity用於控制文本的對齊方式,android:textSize和android:textColor分別設置文本大小和顏色。文本框除了這些屬性外,還具有android:inputType屬性,用於設置輸入類型,比如數字或電話號碼等。
這些控制項在實際應用中,可以通過設置屬性和監聽事件,實現豐富的交互效果。開發者需要根據實際需求選擇合適的控制項,並利用其屬性進行個性化設置,以滿足不同場景的需求。
在你的SDK目錄中,有一份詳盡的開發文檔,裡面詳細描述了這些控制項的屬性和方法,你打開看看,查找你所需要的類。例如,我的路徑是:E:\android-sdk-windows\docs\index.html,裡麵包含了大量關於控制項使用的說明和示例,可以為你提供很多幫助。
通過深入研究這些文檔,你可以更好地理解和掌握Android界面控制項的應用,提升你的開發技能。
Ⅵ android布局中高為0dp 權重為1是什麼意思
比如說有一個linearlayout他的高度是100
a控制項weight=1 b控制項weight=2,c控制項weight=3,d控制項height=40,那麼
a控制項的高度就是 ((100-40)/(1+2+3)) *1
b控制項的高度就是 ((100-40)/(1+2+3)) *2
c控制項的高度就是 ((100-40)/(1+2+3)) *3
如果a不設置height=0dp,那麼當a控制項高度大於((100-40)/(1+2+3)) *1時,weight屬性不起作用,設置等於0,那麼weight屬性什麼時候都起作用。
在學安卓過程中,一直想找一款應用能夠展示各個章節的知識點,並且提供demo例子,就像谷歌Android API Demo一樣,google api demo例子太老了,都是外文,例子也不夠豐富,還不能看源碼,也沒有文檔。於是把自己學習安卓過程中的用到例子都整合在了一起,並把例子都寫在了android學習手冊中,希望想學安卓的java同胞們,能有一個好的例子參考,快速學習安卓,少走彎路。android學習手冊包含9個章節,108個例子,源碼文檔隨便看,例子都是可交互,可運行,源碼採用android studio目錄結構,高亮顯示代碼,不需要積分,文檔都採用文檔結構圖顯示,可以快速定位,度娘不讓發鏈接,360手機助手中可下載。下面是android學習手冊中,關於權重的演示。
Ⅶ android 如何動態設置控制項的寬度和高度
android中的控制項如果在xml布局文件中把控制項的layout_width和layout_height寫成固定值了,好像就不能再在程序中更改該控制項的高度和寬度了,不知哪位大俠有何良策可以指教一二,如 xml文件內容如下: <LinearLayout android:id="@id/dialog_bottom_neutral" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1.0" android:gravity="center"<Buttonandroid:id="@id/dialog_bottom_neutral_button" android:layout_width="80.0dip" android:layout_height="28.0dip" android:background="@drawable/dlg_button" android:gravity="center" android:singleLine="true" android:text="mid" android:textColor="@drawable/dlg_button_text_color" android:textSize="14.0sp" / 小弟在程序中使用button.width和button.height設置沒用,用LayoutParmas設置也沒用