以编程方式在视图中添加填充

我正在推出Android v2.2应用程序。

我有一个片段

在我的片段类的onCreateView(...)callback中,我将一个布局膨胀到如下所示的片段:

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.login, null); return view; } 

上面的膨胀的布局文件是(login.xml):

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Username" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Username" /> </LinearLayout> 

我想设置一个paddingTop到上面的<LinearLayout>元素,我想在Java代码中做,而不是在XML中做。

如何在我的片段中设置paddingTop<LinearLayout> Java类代码?

view.setPadding(0,padding,0,0);

这会将顶部填充设置为padding像素。

如果你想用dp来设置它,你可以做一个转换 :

 float scale = getResources().getDisplayMetrics().density; int dpAsPixels = (int) (sizeInDp*scale + 0.5f); 

要回答你的第二个问题:

 view.setPadding(0,padding,0,0); 

像SpK和Javebuild议的那样,将以像素为单位设置填充。 您可以通过如下计算dp值来将其设置为dp:

 int paddingPixel = 25; float density = context.getResources().getDisplayMetrics().density int paddingDp = (int)(paddingPixel * density); view.setPadding(0,paddingDp,0,0); 

希望有所帮助!

如果你在资源文件中存储填充,你可以简单地调用

  int padding = getResources().getDimensionPixelOffset(R.dimen.padding); 

它为你做了转换。

你可以在下面的代码中通过语法来设置填充到你的视图 –

 view.setPadding(0,1,20,3); 

而且,还有不同types的填充可用 –

填充

paddingBottom来

PaddingLeft

PaddingRight

PaddingTop

这些,链接将参考Android Developers网站。 希望这可以帮助你很多。

使用TypedValue与获取DIP相比,更经济地计算:

 float paddingPx = 10f; int paddingDp = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, paddingPx, context.getResources().getDisplayMetrics()); view.setPadding(paddingDp, paddingDp, paddingDp, paddingDp); 

dynamic地使用下面的方法来设置填充

 setPadding(int left, int top, int right, int bottom) 

例如:

 view.setPadding(2,2,2,2); 

写下面的代码来设置填充,它可能会帮助你。

  TextView ApplyPaddingTextView = (TextView)findViewById(R.id.textView1); final LayoutParams layoutparams = (RelativeLayout.LayoutParams) ApplyPaddingTextView.getLayoutParams(); layoutparams.setPadding(50,50,50,50); ApplyPaddingTextView.setLayoutParams(layoutparams); 

根据子视图的父布局使用LinearLayout.LayoutParams或RelativeLayout.LayoutParams

在以编程方式填充的同时,通过将像素转换为Dp来转换为与密度相关的值。