1. 程式人生 > >Android 設定與外部控制元件距離(setPadding 和setMargin的使用)

Android 設定與外部控制元件距離(setPadding 和setMargin的使用)

一.問題描述

在設計UI過程中,想使圖片處於螢幕的特定位置(如下圖1),但發現圖片總是在頂端(如下圖2):
預實現的介面 實際實現的介面
                          圖一:欲實現的介面                              圖二:實際的介面

二.解決辦法

2.1使用setPadding

如下所示:

RelativeLayout relativeLayout =(RelativeLayout) findViewById(R.id.login); 
relativeLayout.setPadding(0,40,0,0);

其中第一行表示獲取到該介面的佈局,第二行對該佈局使用setPadding()方法,意為規定其內部控制元件需距該控制元件的距離。

2.2使用setMargin

如下所示:

ImageView applicationImageView = (ImageView) findViewById(R.id.app_imageView);
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) applicationImageView.getLayoutParams();
layoutParams.setMargins(0,GetDeviceWideAndHeight.getHeight(this)/10,0,0);
applicationImageView.setLayoutParams(layoutParams);

首先根據圖片的id獲取到該圖片,然後使用getLayoutParams()方法獲取到該圖片的佈局引數(注意這裡佈局引數可能是RelativeLayout.LayoutParams或LinearLayout.LayoutParams等型別的),進而使用setMargin()方法設定該圖片與其父容器的距離。拓展一下:這裡使用的setMargin()方法其實是MarginLayoutParams的方法, 因RelativeLayout.LayoutParams是繼承MarginLayoutParams的,所以可以用setMargin設定距離。

三.總結

setPadding():以外部控制元件的角度,規定其內部控制元件與其的距離
setMargin()

:以內部控制元件的角度,規定外部控制元件與其的距離(注意是用對應的LayoutParams呼叫該方法)
這與在xml佈局檔案中使用margin和padding類似:
android:layout_marginLeft指該控制元件距離邊父控制元件的邊距,
android:paddingLeft指該控制元件內部內容距離該控制元件的邊距。