以编程方式在视图中添加填充
我正在推出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来转换为与密度相关的值。