當前位置:首頁 » 安卓系統 » android設置控制項高度

android設置控制項高度

發布時間: 2022-12-22 14:21:29

❶ 求助: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 開發的時候怎麼動態設置控制項寬高

1、獲取控制項所在的布局

LayoutParamspara=button.getLayoutParams();//獲取按鈕的布局

2、修改布局中的height,width屬性

para.width=200;//修改寬度
para.height=300;//修改高度

3、重新設置修改後的布局給控制項

button.setLayoutParams(para);//設置修改後的布局。

❸ android 開發的時候怎麼動態設置控制項寬高

view.setHeight(100);

❹ 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-ConstraintLayout約束布局使用

這里分別以:app:layout_constraintLeft_toLeftOf和app:layout_constraintRight_toLeftOf舉例:
定義兩個控制項:

這里的id為where的TextView就使用了app:layout_constraintLeft_toLeftOf相對於另一個TextView,這個時候id為where的TextView的顯示的位置,其實是左邊貼在了id為right_top的TextView的左邊上。如下圖:

這個時候如果將id為where的相對於id為right_top的修改成app:layout_constraintRight_toLeftOf,如下所示:

那麼此時顯示的樣式,就是id為where的TextView相對於id為right_top的TextView的右邊顯示。如下圖:

這個屬性,是讓A和B兩個控制項的基準線在同一個水平位置上,比如兩個TextView,大小不同,字體的大小也不同,那麼想要讓這樣兩個不同大小不同字體大小的文本內容顯示在同一個基線,則可以使用該屬性。app:layout_constraintBaseline_toBaselineOf

在約束布局中,margin控制需要存在約束關系的才會生效,比如控制項A某條邊相對於控制項B的某條邊存在約束關系,則控制項A與B之間的margin才會生效。

這里使用了兩種margin屬性,一種就是app:layout_goneMarginEnd,這個只在right_top被gone的時候生效;一種就是android:layout_marginEnd,任何時候都生效。
但是這里的margin需要生效,只有id為where的TextView被id為right_top的TextView所約束,那麼id為where的TextView的margin相對於id為right_top的TextView的才生效。而id為right_top的TextView並沒有被id為where的TextView約束,所以id為right_top的TextView的margin_start其實看不到生效。這里其實可以認為right_top的margin_start生效了,只不過是相對於parent的左邊,但是因為right_top在parent的右上角,所以看不到這個margin效果

這兩個屬性單獨使用並不能生效,水平方向的必須要給控制項的左右兩邊都添加約束才會生效,垂直方向的必須要給控制項的上下兩邊都添加約束才可以生效。

比如這個例子,Button的左邊被TextView的右邊約束,Button的右邊被parent約束,這樣Button的左右兩邊都有約束,那麼給Button添加水平方向的bias屬性就可以生效,即根據Button的左邊約束偏移一定的比例,這里就是相對於TextView的右邊位置偏移40%。
bias的偏移,是根據控制項的水平或者垂直方向的剩餘位置的百分比來偏移。

如果是在ConstraintLayout中居中,則:

如果是在兩個控制項的中間,則可以:

設置寬高百分比,首先設置app:layout_constraintHeight_default="percent"採用百分比形式,其次使用app:layout_constraintHeight_percent="0.3"設置一個0-1的百分比值,最後控制項的寬高需要設置為 0dp ,只有寬高是設置為 0dp 的,百分比才生效。

在約束布局中,給控制項的左右兩邊或者上下兩邊添加約束之後,給控制項的寬高設置為0dp的時候,可以占滿兩個約束控制項中間所有剩餘空間。

比如這個布局,我們需要EditText在TextView的右邊,如果不給EditText設置0dp的寬度,而是設置了match_parent的話,則會占滿屏幕寬度,沒辦法實現EditText在TextView的右邊

在ConstraintLayout中給控制項設置min的寬度和高度,必須是要控制項的layout_width或者layout_height為wrap_content或者0dp時。給控制項設置max的寬度或者高度的時候,必須是要控制項的layout_width或者layout_height為0dp時。
不過在設置max的時候需要注意一點,如果單純只是設置了0dp,如果沒給控制項添加對應的左右約束或者上下約束,比如沒有設置左右約束,那麼layout_constraintWidth_max設置的再大也不會超過整個控制項的wrap_content的長度。

這里的綠色區域的控制項,寬度顯示的明顯沒有達到550dp,但是也不會繼續變長了。
如果是設置了左右約束,那麼最大寬度的限制也就是左右兩個約束中間的剩餘空間寬度

同時給Guide設置layout_constraintGuide_percent和layout_constraintGuide_begin的時候,layout_constraintGuide_begin並不會生效。
layout_constraintGuide_begin是給Guide設置相對於開始位置的偏移,layout_constraintGuide_end是給Guide設置相對於結束位置的偏移。
layout_constraintGuide_percent是設置Guide設置相對於起始位置的偏移百分比。
Guide的作用就是為了給控制項的提供一個約束參考線,控制項可以依靠這個線條約束。

app:constraint_referenced_ids這里是添加約束的控制項的id,app:barrierDirection是添加約束的位置,可以有end、start、left、right、top、bottom
添加不同的值,就可以讓Barrier線條在約束的控制項的對應位置上,比如end,就是讓Barrier線條在username1和password1這兩個控制項的右邊結束位置

這兩個都是線條,都是輔助約束的,但是這兩個有一點區別,就是當控制項比如出現切換手機語言,而造成控制項上的文本顯示長度出現變化的時候,Guideline並不會隨著控制項的長度變化而變化,這樣就會造成約束不靈活,而Barrier可以根據控制項的寬高變化,靈活移動位置。
所以控制項寬高是隨著內容動態變化的,建議使用Barrier,如果控制項的內容是不變的,可以使用Guideline。

❻ ListView怎麼設高度在代碼中

ListView設高度在代碼方法:
1、在ListView的布局文件中把屬性android:layout_height設置成"wrap_content"
<ListView
android:cacheColorHint="#00000000"
android:textColor="#ff435346"
android:textSize = "20sp"
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout="@+id/textViewCurrentBase"
android:listSelector="#00000000"
android:drawSelectorOnTop="false"/>

2、設置子項xml文件(比如這里把一個item.xml設置成ListView的一行)的各個控制項android:layout_height的值。這里80sp+40sp就是需要的一行的高度。
item.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/TextView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView android:focusable="false"
android:textColor="@drawable/white"
android:id="@+id/ItemTitle"
android:layout_height="80sp"
android:layout_width="fill_parent" />
<TextView android:focusable="false"
android:id="@+id/ItemText"
android:textColor="@drawable/blue"
android:layout_height="40sp"
android:layout_width="wrap_content"
android:layout_below="@+id/ItemTitle" />
<Button
android:id="@+id/ItemButton"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_alignParentRight="true" />
</RelativeLayout>

❼ Android中如何在代碼中設置View的寬和高

LayoutParams params = mWebViewHeader.getLayoutParams(); params.height = height; params.width = LayoutParams.FILL_PARENT; mWebViewHeader.setLayoutParams(params);

❽ android 怎麼設置控制項大小 例如如何設置EditText 的大小 用那個方法啊

指定高(寬)度如"30px"、"153dip",滿屏"fill_parent"。
例如:
android:layout_height="76px"

❾ android在代碼中設置控制項(ScrollView)的高度

一般View像你說的那樣便得了,如果那樣不行的話可能Scrollview比較特殊一點,我一般都是讓ScrollView wrap_content ,然後ScrollView里的布局不要wrap_content,比如裡面嵌套一個RelaytiveLayout,這個RelaytiveLayout的高度寫死。你代碼中設置這個RelaytiveLayout的高度試試能不能滿足你的需求

❿ android布局控制項之LinearLayout詳解

Android布局控制項之LinearLayout詳解

LinearLayout是線性布局控制項,它包含的子控制項將以橫向或豎向的方式排列,按照相對位置來排列所有的widgets或者其他的containers,超過邊界時,某些控制項將缺失或消失。因此一個垂直列表的每一行只會有一個widget或者是container,而不管他們有多寬,而一個水平列表將會只有一個行高(高度為最高子控制項的高度加上邊框高度)。LinearLayout保持其所包含的widget或者是container之間的間隔以及互相對齊(相對一個控制項的右對齊、中間對齊或者左對齊)。

xml屬性

android:baselineAligned:是否允許用戶調整它內容的基線。

android:baselineAlignedChildIndex:當一個線性布局與另一個布局是按基線對齊的一部分,它可以指定其內容的基線對齊方式。

android:gravity:指定如何在該對象中放置此對象的內容(x/y坐標值)。

android:orientation:設置它內容的對其方向(橫向/豎向)。

gravity 這個英文單詞是重心的意思,在這里就表示停靠位置的意思。

android:layout_gravity 和 android:gravity 的區別

從名字上可以看到,android:gravity是對元素本身說的,元素本身的文本顯示在什麼地方靠著換個屬性設置,不過不設置默認是在左側的。

android:layout_gravity是相對與它的父元素說的,說明元素顯示在父元素的什麼位置。

比如說button:android:layout_gravity 表示按鈕在界面上的位置。 android:gravity表示button上的字在button上的位置。

可選值

這兩個屬性可選的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical。

而且這些屬性是可以多選的,用「|」分開。

默認這個的值是:Gravity.LEFT

LinearLayout還支持為其包含的widget或者是container指定填充權值。好處就是允許其包含的widget或者是container可以填充屏幕上的剩餘空間。這也避免了在一個大屏幕中,一串widgets或者是containers擠成一堆的情況,而是允許他們放大填充空白。剩餘的空間會按這些widgets或者是containers指定的權值比例分配屏幕。默認的 weight 值為0,表示按照widgets或者是containers實際大小來顯示,若高於0的值,則將Container剩餘可用空間分割,分割大小具體取決於每一個widget或者是container的layout_weight及該權值在所有widgets或者是containers中的比例。例如,如果有三個文本框,其中兩個指定的權值為1,那麼,這兩個文本框將等比例地放大,並填滿剩餘的空間,而第三個文本框不會放大,按實際大小來顯示。如果前兩個文本框的取值一個為2,一個為1,顯示第三個文本框後剩餘的空間的2/3給權值為2的,1/3大小給權值為1的。也就是權值越大,重要度越大。

如果LinearLayout包含子LinearLayout,子LinearLayout之間的權值越大的,重要度則越小。如果有LinearLayout A包含LinearLayout C,D,C的權值為2,D的權值為1,則屏幕的2/3空間分給權值為1的D,1/3分給權值為2的C。在LinearLayout嵌套的情況下,子LinearLayout必須要設置權值,否則默認的情況是未設置權值的子LinearLayout占據整個屏幕

熱點內容
模擬人生java 發布:2025-04-05 05:53:58 瀏覽:549
日本免費雲伺服器色 發布:2025-04-05 04:58:52 瀏覽:864
linuxcpp 發布:2025-04-05 04:53:38 瀏覽:747
安卓字體哪個最好 發布:2025-04-05 04:46:37 瀏覽:649
什麼是hdb3碼編解碼 發布:2025-04-05 04:40:20 瀏覽:504
編譯原理運算符 發布:2025-04-05 04:37:50 瀏覽:520
如何用安卓手機玩ipad的賬號 發布:2025-04-05 04:17:42 瀏覽:935
vivo手機怎麼在桌面建文件夾 發布:2025-04-05 04:15:56 瀏覽:961
在線ftp網頁版軟體 發布:2025-04-05 04:15:02 瀏覽:624
android手機gps 發布:2025-04-05 04:14:59 瀏覽:446