導航:首頁 > 操作系統 > android動態設置weight

android動態設置weight

發布時間:2023-05-17 22:19:57

『壹』 android:layout_width=「0dp」有什麼用為什麼這么設置

dp是dpi的縮寫,dpi表示解析度,指每英寸長度上的點數,0dp就是0解析度。如果你要設置水平方向的比例,就必須把View的android:width屬性設置為0dp。然後設置為android weight屬性設置比例即可;同理,豎直方向,只需設android:height為0dp,然後設weight屬性即可。

『貳』 如何在代碼中動態為TextView設置drawableRight

1

<TextView

android:id="@+id/Title"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_weight="1"

android:drawableRight="@drawable/check_down"

android:gravity="center_vertical"

android:textSize="24dip"桐卜

android:maxLines="1"

android:ellipsize="end"/>

我們寫在xml的時候,都是這么寫的。那代碼呢?我們發現TextView他有一個方法

2

public void setCompoundDrawables (Drawable left, Drawable top, Drawable right, Drawable bottom);

這個方法呢,就是可以在java代碼動態的畫虛輪瞎 左上右下幾個方向

類似於xml中的 android:drawableLeft="@drawable/icon"

android:drawableTop="@drawable/icon"

android:drawableRight="@drawable/icon"

android:drawableButtom="@drawable/icon"

3

具體在代碼中的用法是:

Drawable drawable = getResources().getDrawable(R.drawable.spinner_checked);

drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight()); //設置邊界

titleTv.setCompoundDrawables(null, null, drawable, null);//畫在右邊

4

運行之後的效果

如何在代碼中動態為TextView設置drawableRight

如何在代碼中動態為TextView設置drawableRight

5

界面比較丑,勿噴差空,大家也還可以通過這個方法實現

public void (Drawable left,

Drawable top, Drawable right, Drawable bottom)

轉載

『叄』 Android-屏幕適配全攻略(絕對詳細)(一)

關鍵字: 屏幕適配 px dp dpi sp large限定符 .9.png

前言: 這篇文章依然是我在 [慕課網 ][h]學習 凱子哥 的同名視頻 Android-屏幕適配全攻略 ,所記錄下來的筆記---凱子哥講得真的超詳細。
[h]: http://www.imooc.com/ "MOOC"

從上圖可以看出,主流的解析度是前六種:1280×720、1920×1080、800×480、854×480、960×540、1184×720,不過我們有解決方案。看完這篇文章,想必你就可以解決常見的屏幕適配問題。

接下來正式進入正題。

介紹幾個在Android屏幕適配上非常重要的名詞:

屏幕尺寸 是指屏幕對角線的長度。單位是英寸,1英寸=2.54厘米
屏幕解析度 是指在橫縱向上的像素點數,單位是px,1px=1像素點,一般是縱向像素橫向像素,如1280×720
屏幕像素密度 是指每英寸上的像素點數,單位是dpi,即「dot per inch」的縮寫,像素密度和屏幕尺寸和屏幕解析度有關

dip: Density Independent Pixels(密度無關像素)的縮寫。以 160dpi 為基準,1dp=1px
dp: dip
dpi: 屏幕像素密度的單位,「dot per inch」的縮寫

px: 像素,物理上的絕對單位

sp: Scale-Independent Pixels的縮寫,可以根據文字大小首選項自動進行縮放。Google推薦我們使用12sp以上的大小,通常可以使用12sp,14sp,18sp,22sp,最好不要使用奇數和小數。

用於區分不同的像素密度。

在Google官方開發文檔中,說明了 ** mdpi:hdpi:xhdpi:xxhdpi:xxxhdpi=2:3:4:6:8 ** 的尺寸比例進行縮放。例如,一個圖標的大小為48×48dp,表示在mdpi上,實際大小為48×48px,在hdpi像素密度上,實際尺寸為mdpi上的1.5倍,即72×72px,以此類推。

我們可以通過以下幾種方式來支持各種屏幕尺寸:

wrap_content: 根據控制項的內容設置控制項的尺寸
math_parent: 根據父控制項的尺寸大小設置控制項的尺寸
weight: 權重,在線性布局中可以使用weight屬性設置控制項所佔的比例

例如,我們要實現下圖所顯示的效果:當屏幕尺寸改變時,new reader控制項兩邊的控制項大小不變,new reader控制項會占完剩餘的空間。

具體布局文件如下:

小插曲: 關於 android:layout_weight 屬性

一般情況,我們都是設置要進行比例分配的方向的寬度為0dp,然後再用權重進行分配。如下:

效果為:

效果為:

button1寬度=L+(L-2L)×1/3=2/3L
button2寬度=L+(L-2L)×2/3=1/3L

當然,還有其他的方式,都可以運用此公式進行計算。
在實際開發中,我們一般使用0dp的方式,而不使用其他方式。

簡單的布局一般都使用 線性布局 ,而略微復雜點的布局,我們使用 相對布局 ,大多數時候,我們都是使用這兩種布局的嵌套。

我們使用 相對布局 的原因是, 相對布局 能在各種尺寸的屏幕上保持控制項間的相對位置。

res/layout/main.xml 單面板:

res/layout-large/main.xml 雙面板:

如果這個程序運行在屏幕尺寸大於7inch的設備上,系統就會載入 res/layout-large/main.xml 而不是 res/layout/main.xml ,在小於7inch的設備上就會載入 res/layout/main.xml 。

需要注意的是,這種通過 large 限定符分辨屏幕尺寸的方法,適用於android3.2之前。在android3.2之後,為了更精確地分辨屏幕尺寸大小,Google推出了最小寬度限定符。

res/layout-sw600dp/main.xml ,雙面板布局: Small Width 最小寬度

這種方式是不區分屏幕方向的。這種最小寬度限定符適用於android3.2之後,所以如果要適配android全部的版本,就要使用 large 限定符和 sw600dp 文件同時存在於項目 res 目錄下。

這就要求我們維護兩個相同功能的文件。為了避免繁瑣操作,我們就要使用布局別名。

由於後兩個文具文件一樣,我們可以用以下兩個文件代替上面三個布局文件:

res/layout/main.xml 單面板布局
res/layout/main_twopanes.xml 雙面板布局

然後在 res 下建立
res/values/layout.xml 、
res/values-large/layout.xml 、
res/values-sw600dp/layout.xml 三個文件。

默認布局
res/values/layout.xml :

Android3.2之前的平板布局
res/values-large/layout.xml :

Android3.2之後的平板布局
res/values-sw600dp/layout.xml :

這樣就有了 main 為別名的布局。
在activity中 setContentView(R.layout.main);

這樣,程序在運行時,就會檢測手機的屏幕大小,如果是平板設備就會載入 res/layout/main_twopanes.xml ,如果是手機設備,就會載入 res/layout/main.xml 。我們就解決了只使用一個布局文件來適配android3.2前後的所有平板設備。

如果我們要求給橫屏、豎屏顯示的布局不一樣。就可以使用 屏幕方向限定符 來實現。
例如,要在平板上實現橫豎屏顯示不用的布局,可以用以下方式實現。
res/values-sw600dp-land/layouts.xml :橫屏

res/values-sw600dp-port/layouts.xml :豎屏

自動拉伸點陣圖,即android下特有的 .9.png 圖片格式。

當我們需要使圖片在拉伸後還能保持一定的顯示效果,比如,不能使圖片中的重要像素拉伸,不能使內容區域受到拉伸的影響,我們就可以使用 .9.png 圖來實現。

要使用 .9.png ,必須先得創建 .9.png 圖片,androidSDK給我們提供了的工具就包含 .9.png 文件的創建和修改工具。雙擊 SDK安裝目錄 oolsdraw9patch.bat ,就會打開下圖所示的窗口。

下面是一個例子:

Button屬性設置:

如果我們選擇的內容區域偏差太大,可能就不會顯示出text值 BUTTON 。

好了,這篇文章寫的有點多了,剩下的內容放在 下篇文章 記錄吧。
內容提要:
解決方案-支持各種屏幕密度
解決方案-實施自適應用戶界面流程

未完待續

『肆』 LinearLayout布局下android:layout_weight用法

  1. layout_weight意思是布局比重的意思,在線性布局中常用layout_weight,分割布局。

  2. 通常線性布局中寬高布局常信叢用android:layout_width=match_parent|wrap_content,android_height=match_parent|wrap_content來進行布局,如果要用比重布局,通常android:layout_width屬性滑臘櫻就會不起作用,設局老置為"0";根據想要布局的比例,設定android:layout_weight的值,值越大,占的布局就越大。

  3. 考慮到Android多版本的兼容問題,通常使用match_parent而不使用fill_parent.

『伍』 怎麼用代碼設置LinearView的weight

通過坦亂乎Java代碼設置layout_weight
通過Java code來設置View的layout_weight。
方法一:
LayoutParams param = new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT, 1.0f);

然後讓悉:View.setLayoutParams(param),則這個View在它的LinearLayout的layout_weight為1.0f (表示1.0是浮點數,或者 (float)1.0)
方法二:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT);
params.weight = 1.0f;
Button button = new Button(this);
button.setLayoutParams(params);

為什麼會有方法二呢?因為有可能會通過new LinearLayout.LayoutParams來陪橋設置Gravity,比如:
leftArrow = new ImageButton(context);
lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, Gravity.LEFT);
lp.weight = 1.0f;
leftArrow.setLayoutParams(lp);

『陸』 android:layout的width與weight是什麼意思有什麼區別

很簡單啦。width是指這個控制項本身的寬度,而weight是指控制項位於布局(容器)中的寬度位置,一般是百分比。

『柒』 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 如何動態設置控制項的寬度和高度

一、方法
使用getLayoutParams() 和setLayoutParams()方法
二、示例代碼
LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams) aaa.getLayoutParams();
// 取控制項aaa當前的布局參數
linearParams.height = 365; // 當控制項的高強制設成365象素
aaa.setLayoutParams(linearParams); // 使設置好的布局參數應用到控制項aaa
三、原理
a)getLayoutParams()和setLayoutParams()都是控制項基類view的public方法,在外部也可以直接調用。
b)由於LayoutParams一般是在加入容器中設置的,所以容易混淆所指定的布局屬性究竟是保存在容器中,還是控制項本身的屬性,答案是控制項本身。但是在設置時還是要注意布局屬性與容器種類密切相關。

『玖』 安卓開發如何設置wight比重

在xml文件裡面設置,一般在線性布局裡面使用。android:layout_weight="1"通過此熟悉設置權重,即所佔比例。比如2個空間,一個android:layout_weight="1",另一個android:layout_weight="2",則前一個比重為1/(1+2)=1/3,另外一個為2/3.
具體可參考這個鏈接http://www.2cto.com/kf/201109/104482.html

『拾』 android布局裡的Button排列問題

這樣可以完全達到你的要求,並且屏幕怎麼變都行

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>

<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
胡戚配android:layout_weight="1"/>

<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
褲指仔敬android:layout_weight="1"/>

<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
閱讀全文

與android動態設置weight相關的資料

熱點內容
錢的所有演算法 瀏覽:13
光模塊伺服器怎麼直接連電腦 瀏覽:376
編譯器識別單詞 瀏覽:344
2b2t伺服器怎麼獲得金蘋果 瀏覽:344
SQL如何進行伺服器配置 瀏覽:175
貿易公司適合在什麼app引流 瀏覽:717
高級c語言編程還在用turboc 瀏覽:884
cad如何畫單片機 瀏覽:13
管理雲伺服器哪個軟體好 瀏覽:747
什麼app可以消除照片一片水印 瀏覽:242
在什麼app上發表條漫 瀏覽:88
安卓電腦主機怎麼打開 瀏覽:819
eos生態app什麼時候可以登陸 瀏覽:397
找安裝維修工人用什麼App 瀏覽:300
區位碼加密 瀏覽:854
考編教師用什麼app 瀏覽:195
靜態面向對象編程語言 瀏覽:908
炒股密碼pdf 瀏覽:666
差分演算法有哪些 瀏覽:567
佳明怎麼配對安卓 瀏覽:248