android設定控制項的位置以及獲取控制項的座標

2021-08-03 05:08:59 字數 1998 閱讀 3089

專案中遇到乙個問題,就是印表機打字的效果,然後找到了一位大神的輪子。android實用view系列——textview實現印表機效果

這樣確實實現了印表機打字的效果,但是又出現乙個問題。這個印表機的自定義view事先不能確定整體的高度,這樣,印表機每列印一行,高度就會變大一行,那麼在linear layout布局中就會影響下邊控制項的位置。

那麼我們就需要在**中根據字串的長度設定好fadeintextview的位置。

在activity類中重寫onwindowfocuschanged(boolean hasfocus),然後在此方法中呼叫控制項的getlocationonscreen(int location)方法獲取參考控制項的座標位置。location引數是乙個int型的陣列,location[0]代表控制項left座標,location[1]代表控制項top的座標,location[2]代表控制項right的座標,location[3]代表控制項bottom的座標。(單位畫素)

呼叫getlocationonscreen(int location)之後location陣列內就會有相應的座標值。

public

class

goodspageractivity

extends

....

....

@override

public

void

onwindowfocuschanged(boolean hasfocus)

......

}

想要設定控制項的座標位置,就需要先知道螢幕的寬高以及密度(單位畫素)

metric = new displaymetrics();

getwindowmanager().getdefaultdisplay().getmetrics(metric);

// 螢幕寬度(畫素)

width = metric.widthpixels;

// 螢幕高度(畫素)

height = metric.heightpixels;

// 螢幕密度(0.75 / 1.0 / 1.5)

density = metric.density;

int densitydpi = metric.densitydpi; // 螢幕密度dpi(120 / 160 / 240)

然後計算字串的總長度以及所佔的行數(單位畫素)

//字元的長度

intlength = str.length();

//事先設定的字型大小為19sp,根據密度轉成畫素值

float textl = length * 19 * density;

//獲取行數

int line = (int) (textl / (width - 100));

//計算的到的行數是浮點數轉的小數,相當於2.5-->2,那麼實際是3行。

if (textl % (width - 100) > 0)

獲取了所有數值之後,進行控制項座標的設定:

viewgroup.marginlayoutparams margin = new viewgroup.marginlayoutparams(view.getlayoutparams());

int top = (int) (refer - 19 * density * 2 - line * 19 * density-(line-1)*15);

//設定位置引數,left,top,right,bottom。

margin.setmargins(50, top, margin.rightmargin + 50, top + margin.height);

relativelayout.layoutparams layoutparams = new relativelayout.layoutparams(margin);

view.setlayoutparams(layoutparams);

這樣就可以隨意設定控制項的位置了

qt 手動設定控制項的位置

qt中的layout用著很不錯,但有時候你想指定控制項絕對位置.用以下紅色 就可以了.chanel1 new qpushbutton tr 通道1 chanel1 setgeometry rect x 200,rect y 10,100,30 chanel1 setparent this 該行 是設...

jquery設定控制項位置的方法

純js寫法,如下 document.getelementbyid child style.left 800px document.getelementbyid child style.top 200px offset 獲取當前元素基於瀏覽的位置 var offsettop unamespan off...

jquery如何設定控制項位置

純js寫法 document.getelementbyid child style.left 800px document.getelementbyid child style.top 200px offset 獲取當前元素基於瀏覽的位置 varoffsettop unamespan offset ...