在代码中设置leftMargin和rightMargin值

本文介绍了如何在代码中设置GridView的左右边距,并通过实验代码片段演示了两种实现方式,适用于不同布局配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

布局文件片段如下:
  1. <LinearLayout  
  2.         android:layout_width="wrap_content"  
  3.         android:layout_height="wrap_content"  
  4.         ...>  
  5.   
  6.         <GridView  
  7.             android:id="@+id/icon"  
  8.             android:layout_width="wrap_content"  
  9.             android:layout_height="wrap_content"  
  10.             android:layout_marginLeft="@val/l_margin"  
  11.             android:layout_marginRight="@val/r_margin"  
  12.          .../>  
  13.         ...  
  14. </LinearLayout>  

现在有需求在代码中控制GridView的左右边距,

随着GridView中item个数变化,调整leftMargin和rightMargin的值,

查阅手册后,有两种方式实现比较方便,具体的实验代码片段如下:

  1. public void onCreate(Bundle savedInstanceState){  
  2.         super.onCreate(savedInstanceState);  
  3.         setContentView(R.layout.main);  
  4.         LinearLayout root = (LinearLayout) findViewById(R.id.root);  
  5.                   
  6.         //output screen size information in Logs  
  7.         DisplayMetrics dm = new DisplayMetrics();  
  8.         getWindowManager().getDefaultDisplay().getMetrics(dm);    
  9.         int width = dm.widthPixels;    
  10.         int height = dm.heightPixels;      
  11.         Log.d("Screen Info""width:" + width + ", height:" + height);  
  12.           
  13.         //left/right margin test (Method --- 01)  
  14.         GridView gv = (GridView)findViewById(R.id.testID);    
  15.         LinearLayout.LayoutParams paramTest = (LinearLayout.LayoutParams) gv.getLayoutParams();  
  16.         paramTest.leftMargin = 50;  
  17.         paramTest.rightMargin = 50;  
  18.         gv.setLayoutParams(paramTest);  
  19.         Log.d("Screen Info""LeftMargin:" + paramTest.leftMargin + ", RightMargin:" + paramTest.rightMargin);  
  20. }  

上面代码片段实现了在代码中设置Margin值的第一种方式,需要说明的是,这里要根据不同布局配置来做转换,

比如这里GridView是在LinearLayout布局内,所以转换为:LinearLayout.LayoutParams

另外,leftMargin和rightMargin分别是LinearLayout.LayoutParams的成员。

  1. //left/right margin test (Method --- 02)  
  2. GridView gv = (GridView)findViewById(R.id.testID);    
  3. ViewGroup.MarginLayoutParams paramTest2 = (ViewGroup.MarginLayoutParams) gv.getLayoutParams();  
  4. paramTest2.setMargins(300300);  
  5. gv.requestLayout();  
  6. //... ...  

上面代码片段是实现该功能的第二种方式,需要说明的是,

这里不再依赖不同的布局文件和根据不同布局做转换的问题,但是组件本身要支持margins的方法才可行

比如下面这个例子:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值