http://imageshack.us/photo/my-images/69/device20120201005942.png/
在Eclipse的Graphical Layout窗口中设计的这个布局给出了我想要的东西(androID:layout_weight解决了垂直拉伸):
<?xml version="1.0" enCoding="utf-8"?><tableLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="fill_parent" androID:layout_height="fill_parent" androID:layout_gravity="center" androID:stretchColumns="*" > <tableRow androID:ID="@+ID/tableRow1" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:layout_gravity="center" androID:layout_weight="1"> <ImageVIEw androID:ID="@+ID/imageVIEw1" androID:layout_gravity="center" androID:src="@drawable/add" /> <ImageVIEw androID:ID="@+ID/imageVIEw2" androID:layout_gravity="center" androID:src="@drawable/bound" /> <ImageVIEw androID:ID="@+ID/imageVIEw3" androID:layout_gravity="center" androID:src="@drawable/cod" /> </tableRow> <tableRow androID:ID="@+ID/tableRow2" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:layout_gravity="center" androID:layout_weight="1" > <ImageVIEw androID:ID="@+ID/imageVIEw4" androID:layout_gravity="center" androID:src="@drawable/delete" /> <ImageVIEw androID:ID="@+ID/imageVIEw5" androID:layout_gravity="center" androID:src="@drawable/delete2" /> <ImageVIEw androID:ID="@+ID/imageVIEw6" androID:layout_gravity="center" androID:src="@drawable/floppy" /> </tableRow></tableLayout>
我试图在代码中创建相同的外观但到目前为止失败.这是我的活动的创建:
public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.tablelo); tableLayout tl = (tableLayout) findVIEwByID(R.ID.table); Log.d(TAG,"WIDth :" + tl.getWIDth()); for (int row = 0; row < 3; row++) { tableRow tr = new tableRow(this); tr.setID(100 + row); for (int cell = 0; cell < 3; celL++) { ImageVIEw image = new ImageVIEw(this); image.setimageResource(imageIDs[row * 3 + cell]); tr.addVIEw(image); } tr.setGravity(Gravity.CENTER); LayoutParams params = new tableRow.LayoutParams( LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT,1); tr.setLayoutParams(params); tl.addVIEw(tr,params); } tl.setStretchAllColumns(true);}
我错过了设置ImageVIEw重力的代码,但这种尝试导致崩溃:
image.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,Gravity.CENTER));
此代码生成3行,每行都水平拉伸但不垂直拉伸:
http://imageshack.us/photo/my-images/835/gridc.png/
我找不到我在这里失踪的东西.我还尝试在设计器中准备一个tablerow并在运行时添加并添加到表中,但结果没有改变.
所以,不知何故,我希望以编程方式获得我可以使用编辑器创建的相同布局.
请帮忙!
解决方法 我花了一个半小时试图弄清楚发生了什么.然后我发现它:)这是我的tableActivity的完整列表,请注意表格行和图像的不同LayoutParams的使用:import androID.app.Activity;import androID.os.Bundle;import androID.util.Log;import androID.vIEw.Gravity;import androID.Widget.*;import androID.Widget.tableLayout;import androID.Widget.tableRow;public class tableActivity extends Activity { private static final String TAG="tableActivity"; public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.table_activity); tableLayout tl = (tableLayout) findVIEwByID(R.ID.table); Log.d(TAG,"WIDth :" + tl.getWIDth()); for (int row = 0; row < 3; row++) { tableRow tr = new tableRow(this); tr.setID(100 + row); //Note that you must use tableLayout.LayoutParams,//since the parent of this tableRow is a tableLayout tableLayout.LayoutParams params = new tableLayout.LayoutParams( tableLayout.LayoutParams.WRAP_CONTENT,tableLayout.LayoutParams.WRAP_CONTENT,1f); for (int cell = 0; cell < 3; celL++) { ImageVIEw image = new ImageVIEw(this); image.setimageResource(androID.R.drawable.btn_plus); //Note that here you must use tableRow.LayoutParams //since tableRow is the parent of this ImageVIEw tableRow.LayoutParams imageParams = new tableRow.LayoutParams(); //And this is how you set the gravity: imageParams.gravity = Gravity.CENTER; image.setLayoutParams(imageParams); tr.addVIEw(image); } tr.setLayoutParams(params); tl.addVIEw(tr,params); } tl.setStretchAllColumns(true); }}
table_activity.xml只是一个空表布局:
<?xml version="1.0" enCoding="utf-8"?><tableLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:ID="@+ID/table" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"></tableLayout>
简而言之,最简单的解决方案是使用xml文件中定义的布局:)但是如果你必须使用JAVA,你必须小心你正在使用的LayoutParams之王,你应该总是使用一个视图的家长.
总结以上是内存溢出为你收集整理的以编程方式使用android:layout_weight填充TableLayout全部内容,希望文章能够帮你解决以编程方式使用android:layout_weight填充TableLayout所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)