android獲取view高度
『壹』 Android中如何在代碼中設置View的寬和高
LayoutParams params = mWebViewHeader.getLayoutParams(); params.height = height; params.width = LayoutParams.FILL_PARENT; mWebViewHeader.setLayoutParams(params);
『貳』 Android開發中怎樣獲取WebView的內容寬度高度
可以根據webview的getwidth和getHeight的寬度和高度,來獲取顯示的高度和寬度,要注意的是需要等待界面載入完才能獲取到。
『叄』 android自定義view如何獲取父容器賜予的寬度和高度
自定義View,想要自定義給定寬和高,你要寫自定義屬性,然後在xml文件中指定寬高才會有效,同時當給定的寬和高的值是wrap_content 或 fill_parent 這類的,這時需要在自定義View中重寫onMeasure方法,進行控制項的寬高測量。
『肆』 android 自定義view 的高度,寬度怎麼設置
Android中View是顯示控制項,需要用一個layout布局來裝載,layout尺寸大寫的設置如下:
1. 盡量使用wrap_content、match_parent、weight 來規定layout的大小。
2. 要確保布局的靈活性並適應各種尺寸的屏幕,應使用 「wrap_content」 和 「match_parent」 控制某些視圖組件的寬度和高度。
3. 使用 「wrap_content」,系統就會將視圖的寬度或高度設置成所需的最小尺寸以適應視圖中的內容,而 「match_parent」(在低於 API 級別 8 的級別中稱為「fill_parent」)則會展開組件以匹配其父視圖的尺寸。
4. 如果使用 「wrap_content」 和 「match_parent」 尺寸值而不是硬編碼的尺寸,視圖就會相應地僅使用自身所需的空間或展開以填滿可用空間。此方法可讓布局正確適應各種屏幕尺寸和屏幕方向。
5. 如果某些地方必須要規定控制項的大小,那麼要使用dp 或者 dip單位。
『伍』 android activity 什麼時候可以得到view的高度
在onCreate函數中,View還未被展開,是無法獲得高度的。
所以可以對TextvView注冊一個監聽者:
復制代碼
ViewTreeObserver vto = tv.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
public void onGlobalLayout() {
heigh = appDescription.getHeight();
tv.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
});
『陸』 安卓開發 view隱藏的時候能獲取到高度嗎
可以自定義一個類position機制,在每項中設置tag作為position,這個需要自己手動設置了。例如「我的信息」這一ItemView中setTag(0),「我的名片「setTag(1)類似的設置,然後你在點擊事件中就可以getTag來判斷position了。
『柒』 fragment recyclerview的高度變了,怎麼測量view的高度
在實際工作中,我們經常需要在程序裡面用代碼來控制一些組件的寬度和高度,以適應不同解析度的屏幕。盡管有不同的Layout供我們使用,但很多時候需要通過用代碼設定組件的大小,以達到良好的界面視覺效果。
注意:組件和控制項是有區別的。組件對應的英文是component,控制項對應的英文是control;控制項是帶有界面的,組件則未必有界面;控制項屬於組件,可以說它是帶有界面的組件。比如Button有界面,因此可以說它是控制項,也可以說它是組件。LinearLayout沒有界面,因此它不能算是控制項,但它卻是組件。本文中由於涉及了帶有和不帶有界面的組件,因此,用組件泛指這兩者。
有些組件,比如Button,可以在程序中用setWidth和setHeight來設定其大小,這是非常方便的。但有些組件卻沒有這兩個設定大小的方法,比如ImageButton、Spinner以及LinearLayout等等,那麼如何在程序中根據需要,動態地設定他們的大小呢?下面就用實際的例子來說明這個問題。
1. 首先創建一個Android項目:
2. 將圖片文件magnifier.png拖入到項目的res/drawable-mdpi文件夾下。mangifier.png的內容如下:
3. 在strings.xml中,增加如下粗體字代碼。這些代碼,將會被Spinner使用:
<string name="spin_prompt">請選擇城市 </string>
<string-array name="cities">
<item>北京 </item >
<item>上海 </item >
<item>南京 </item >
<item>烏魯木齊 </item>
<item>哈爾濱 </item>
<item>符拉迪沃斯托克 </item>
</string-array>
4. 修改main.xml,使之如下:
<?xml version="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Buttonandroid:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<ImageButtonandroid:id="@+id/image_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/magnifier"
/>
<Spinnerandroid:id="@+id/sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/cities"
android:prompt="@string/spin_prompt"
/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<LinearLayoutandroid:id="@+id/ll_left"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello"
/>
</LinearLayout>
<LinearLayoutandroid:id="@+id/ll_right"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Android"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
不難看出,mainx.ml有一個Button,一個ImageButton,一個Spinner和兩個EditText。
5. 運行本項目,得到的結果如下:
現在假定,我們要:
a) 增加Button的高度
b) 增加ImageButton的寬度和高度
c) 增加Spinner的寬度
d) 將包含Hello的EditText靠左,包含Android的EditText靠右
6. 修改AdjustControlSize.java的代碼,使之如下:
public class AdjustControlSize extends Activity
{
private Button btn;
private ImageButton imagebtn;
private Spinner sp;
private LinearLayout ll_left;
private LinearLayout ll_right;
private DisplayMetrics dm;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 獲取屏幕尺寸
dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
btn = (Button)findViewById(R.id.btn);
imagebtn = (ImageButton)findViewById(R.id.image_btn);
sp =(Spinner)findViewById(R.id.sp);
ll_left = (LinearLayout)findViewById(R.id.ll_left);
ll_right = (LinearLayout)findViewById(R.id.ll_right);
// 增加Button的高度,可以很方面地通過setHeight方法來實現。
btn.setHeight(80);
// 但如果要想在代碼中改變某些組件,比如ImageButton、Spinner以及LinearLayout,
// 用setHeight或者setWidth的方式就不行了,因為這些組件中,沒有提供這兩個方法。
// 為此,可以通過LayoutParams這個類(這里我們用LinearLayout.LayoutParams)來實現這一點。
// 改變imagebtn的寬度和高度均為屏幕寬度的1/4
LinearLayout.LayoutParams imagebtn_params = newLinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
imagebtn_params.height = dm.widthPixels / 4;
imagebtn_params.width = dm.widthPixels / 4;
imagebtn.setLayoutParams(imagebtn_params);
// 設定sp的寬度為屏幕寬度的2/3
LinearLayout.LayoutParams sp_params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
sp_params.width = dm.widthPixels * 2 / 3;
sp.setLayoutParams(sp_params);
// 讓兩個EditText分別處於屏幕的左右兩端。
// 在main.xml中,兩個EditText分別處於ll_left和ll_right這兩個LinearLayout中,且
// 處於ll_left的gravity屬性為left,即置於其中的組件靠左;處於ll_right的gravity
// 屬性為right,即置於其中的組件靠右。但是由於這兩個LinearLayout的寬度屬性均為
// wrap_content,所以它們靠在一起了,由此導致了兩個EditText也靠在一起。
// 如果,我們把ll_left和ll_right的寬度能夠設定為屏幕寬度的一半,那麼兩個EditText就
// 會分別處於屏幕的兩端。
LinearLayout.LayoutParams ll_params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
ll_params.width = dm.widthPixels / 2;
ll_left.setLayoutParams(ll_params);
ll_right.setLayoutParams(ll_params);
}
}
『捌』 android自定義viewGroup中怎麼獲得子view,並測量到子view的寬高
findviewbyid就可以了,或者viewgroup。getview(index);等view繪制後就可以獲取到view的寬高了。
『玖』 android webview 高度如何計算的
1. 通過webview的didFinishLoad:方法,這個時候webview已經載入完成,可以獲得真實高度。
2. 通過js來獲取實際頁面的高度,獲取的時機也通過js來監聽。
3. 通過檢測webView.scrollView.contentSize,只要這個值發生改變,你馬上就能夠被通知。注冊觀察者的代碼類似這樣:
[webView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew
context:&webViewContext]
然後在觀察者中實現- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context,你就隨時可以監測到webView的高度變化了