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();
    }
}
时间: 2024-08-29 14:19:09

Android 动态设置margin的相关文章

Android 动态设置控件高度

TextView textView= (TextView)findViewById(R.id.textview); LinearLayout.LayoutParams linearParams =(LinearLayout.LayoutParams) textView.getLayoutParams(); //取控件textView当前的布局参数 linearParams.height = 20;// 控件的高强制设成20 linearParams.width = 30;// 控件的宽强制设成3

android动态设置控件的高宽

关键代码: LayoutParams para; para = mTabImg.getLayoutParams(); para.width=one; mTabImg.setLayoutParams(para); mTabImg是你要设置的控件  首先拿到后就可以设置 Display currDisplay = getWindowManager().getDefaultDisplay();// 获取屏幕当前分辨率 int displayWidth = currDisplay.getWidth();

Android动态设置View的位置和大小

以LinearLayout中的控件ImageView为例 LinearLayout layout = (LinearLayout) convertView.findViewById(R.id.linearlayout); ImageView imageView = new ImageView(this); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(100, 100); params.setMargins(5,

Android 动态设置TextView drawableLeft的方式

对于TextView或者EditText动态设置drawableLeft,drawableRight,drawableTop,drawableBottom,drawableStart,drawableEnd的方法总结 Android中提供了许多动态设置的方法 但是用中容易造成的问题是,我们往往只调用了如上的一些方法,但并没有将Drawable的Bounds设置为特定的数据,导致这些图片无法显示,因此,做如下操作即可 设置右方向上的图片 Drawable drawable = getResourc

LinearLayout 如何动态设置 margin?

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); lp.setMargins(10, 20, 30, 40); imageView.setLayoutParams(lp); 动态的设置margin 给params  设置

android 动态设置TextView值,例:金额添加

一说到动态递增设置TextView值,非常多人应该立即就想到起个线程,让后在线程中睡眠指定时间,使用handler发送消息更新TextView值! 这样是实现了动态递增设置TextView值可是效率不咋滴吧,须要的话能够自己去试试,如1到100,10s内显示完,会感觉到有点卡的. 这里有个更好的方法,使用ValueAnimator进行设置,并且不须要自己去计算每次叠加后须要间隔的时间,以下是代码: public static void autoIncrement(final TextView t

android 动态设置TextView值,例:金额增加

一说到动态递增设置TextView值,很多人应该马上就想到起个线程,让后在线程中睡眠指定时间,使用handler发送消息更新TextView值! 这样是实现了动态递增设置TextView值但是效率不咋滴吧,需要的话可以自己去试试,如1到100,10s内显示完,会感觉到有点卡的! 这里有个更好的方法,使用ValueAnimator进行设置,而且不需要自己去计算每次叠加后需要间隔的时间,下面是代码: public static void autoIncrement(final TextView ta

Android动态设置Marggin属性

在Android的布局文件中,可以设置Marggin属性指定外边距, 原文地址:http://blog.csdn.net/arest/article/details/6362819 [xhtml] view plaincopyprint? <ImageView android:layout_margin="5dip" android:src="@drawable/image" /> 但是控件在代码中没有setMarggin之类的方法可以使用.不过Line

Android动态设置纯色图标的颜色

https://blog.csdn.net/qq_20082961/article/details/73718363 以前做了一个流量悬浮窗,悬浮窗里有当前网络状态的图标和网速的文字,想实现改变文字颜色的同时改变状态图标的颜色  实现后分享出来让大家参考下 先上图 以下是关键代码 <ImageView android:id="@+id/iv_icon" android:layout_width="150dp" android:layout_height=&qu