1. 程式人生 > >Android 動態設定margin

Android 動態設定margin

android的view中有setPadding,但是沒有直接的setMargin方法。如果要在程式碼中設定該怎麼做呢?

可以通過設定view裡面的 LayoutParams 設定,而這個LayoutParams是根據該view在不同的GroupView而不同的。

佈局檔案如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:id="@+id/ceshi_ly"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/darker_gray" >

        <TextView
            android:id="@+id/ceshi_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@android:color/holo_green_dark"
            android:text="測試動態設定margin" />
    </LinearLayout>

</RelativeLayout>

程式碼如下:
package com.android.testdemo;

import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		TextView ceshiTv = (TextView) findViewById(R.id.ceshi_tv);
		LinearLayout.LayoutParams lp = (LayoutParams) ceshiTv.getLayoutParams();
		lp.setMargins(30, 50, 22, 10);
		ceshiTv.setLayoutParams(lp);
	}
}
效果如下: 



當然也可以把其封裝成方法,如下:

public static void setMargins (View v, int l, int t, int r, int b) {
    if (v.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) {
        ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
        p.setMargins(l, t, r, b);
        v.requestLayout();
    }
}


相關推薦

Android 動態設定margin

android的view中有setPadding,但是沒有直接的setMargin方法。如果要在程式碼中設定該怎麼做呢? 可以通過設定view裡面的 LayoutParams 設定,而這個Lay

Android動態設定Margin的方法

Android動態設定Margin :    一、 如果這個控制元件實在XML中定義的  比如Textview LinearLayout.LayoutParams lp = (LinearLayou

Android 動態設定padding跟margin的問題

最近要做到動態設定padding跟margin,設定它們四個引數都是int型別。比如這裡設定了10,,可是這個數又是代表什麼意思呢?一直很好奇它們的單位問題,所以這就造成了,在不同手機上的適配問題。有

Android動態設定佈局寬高

例如設定一個圖片寬高 關鍵程式碼: //取控制元件當前的佈局引數 LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) imageView.getLayoutParams(); //設定寬度值 params.wi

ScrollView動態設定Margin後不能滑動解決方法

ScrollView的父佈局是ViewGroup,所有需要用ViewGroup來設定param,正確方式如下: 若設定margin後內容顯示不全,說明你設定的margin低於了你覆蓋文字的控制元件的高度 ViewGroup.MarginLayoutParams params= (View

Android 動態設定佈局屬性

Android在XML檔案中寫佈局很方便, 但有時候不夠靈活, 有時候我們需要動態新增View或者ViewGroup. 點選動態新增TextView: private LinearLayout mLinearLayout; private in

Android動態設定GridView的高度,固定column,實現高度自適應

動態設定GridView的高度,固定column,根據gridview中的item個數設定高度: 呼叫以下方法:     [java]  view plain copy print ?

Android動態設定字型顏色

步驟:1.在values資料夾下的strings.xml檔案裡新增顏色:比如 <color name="ccc">#ccc</color> 2.如果你直接這樣寫: tv.setTextColor(R.color.ccc); 理論上是不行的,不過我發現

android 動態設定控制元件的高度,使用對應佈局中的dp值

1. 獲取你要進行改變的控制元件的佈局 LinearLayout.LayoutParams linearParams =(LinearLayout.LayoutParams) myView.getLayoutParams(); 2.設定佈局的高度   後面的引數就是對應

Android 動態設定Shape

引言:之前涉及到設定view背景的地方几乎都是通過寫<shape>標籤的方式實現的。慢慢的,專案裡的xml越來越多,命名都成問題了!於是就想用動態設定shape的方式來替換靜態配置shape標籤。 靜態配置shape 這裡對形狀可繪製物件

Android 動態設定TextView的drawableLeft等屬性

  首先,我們在開發過程中,會經常使用到android:drawableLeft="@drawable/ic_launcher"這些類似的屬性:   關於這些屬性的意思,無非是在你的textView

android 動態設定控制元件大小

ImageView view = new ImageView(context);view.setLayoutParams(new LinearLayout.LayoutParams(30, 30)); view.setpadding(0,0,0,0); LayoutP

Android——動態設定view背景顏色setBackgroundColor

setBackgroundColor 用於動態設定view背景顏色 今天寫程式碼的時候遇到個小問題 動態設定的時候用Color.GRAY,系統自己帶著的顏色,是沒有問題的 但是用自己定義的顏色,就不生效。 然後我搜索到了下面這個網址 請瀏覽上

Android,View設定margin

Android的view中有setPadding,但是沒有直接的setMargin方法。如果要在程式碼中設定該怎麼做呢? 可以通過設定view裡面的 LayoutParams 設定,而這個LayoutParams是根據該view在不同的GroupView而不同的。 Ima

Android動態設定控制元件高度

GridView mGrid= (GridView) findViewById(R.id.gridview);  // 取控制元件mGrid當前的佈局引數 LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams) m

Android View設定Margin

準備工作:  佈局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http:/

Android動態設定佈局,為LinearLayout動態新增子控制元件

View view = getActivity().getLayoutInflater().inflate(R.layout.category_select_popupwindow_right, null); LinearLayout line

android 動態設定drawableTop,drawableLeft,drawableRight,drawableBottom.

android 動態設定drawableTop。 通常情況下我們都是在佈局檔案中設定drawableTop,drawableLeft,drawableRight,drawableBottom.<TextView          android:id="@+id/ti

android 動態設定ImageView圖片

以下設定方法將會用圖片填充剩下的螢幕空間,圖片會變形: ImageView1.setBackgroundDrawable(getResources().getDrawable(R.drawable.http_imgload1)); 以下設定方法填充設定的ImageView

Android 動態設定 ListView 和 GridView 高度

1 需求分析 我們可能會有這樣的需求,ListView添加了一個頭部,然後頭部裡面有一個ListView或者GridView,當你按照正常的方式給頭部的ListView或者GridView設定資料的時候,發現它只能顯示一行!!!這可不是我想要的。 那麼怎