基本上,第一个按钮是生成的,但是第二个按钮放在它上面,然后在第二个按钮之后它们开始一个在另一个之下,我不知道为什么我需要第二个按钮放在第一个以下,我不能让第二个按钮重叠它,任何帮助将不胜感激。
这是我的代码:
for (int i = 0; i < classes.length; i++) {
System.out.println("Created a button # " + i + "!");
Button button = new Button(this);
button.setId(i);
//Define the height and width of the button.
RelativeLayout.LayoutParams buttonDetails = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, //Width
200 //Height
);
if (i > 0) { //If it isn't the first button, then...
//Place it below the previous button.
buttonDetails.addRule(RelativeLayout.BELOW, i - 1);
}
//Add the button text.
button.setText(something[i]);
//Center the button horizontally.
buttonDetails.addRule(RelativeLayout.CENTER_HORIZONTAL);
//Generate a button for the class.
layout.addView(button, buttonDetails);
}
XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_menu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="Menu">
</RelativeLayout>
答案 0 :(得分:0)
根据source code,添加主题为0的规则将导致在布局期间忽略该规则。您的第二个Button
就属于这种情况。一般来说,最好使用静态ID(例如R.id.some_id
)而不是您自己创建的静态ID。如果您必须使用自己生成的ID,则View.generateViewId()
非常有用,但仅限于API 17+。如果您需要支持较旧的API,那么copy the method就足够了。
正如其他人所提到的,垂直导向的LinearLayout
将完成您尝试用更少的手工工作做的事情。
答案 1 :(得分:0)
事情是你不能使用0作为id。从1开始。它会正常工作。使代码如下所示
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.InitialDirectory = @"C:\temp";
saveFileDialog.RestoreDirectory = true;
saveFileDialog.Title = "Browse Text Files";
saveFileDialog.DefaultExt = "doc";
saveFileDialog.Filter = "Word Doc (*.doc)|*.doc|PDF (*.pdf)| *.pdf";
saveFileDialog.CheckFileExists = false;
saveFileDialog.CheckPathExists = true;
Warning[] warnings;
string[] streams;
string mimeType;
string encoding;
string extension;
byte[] bytes = reportTest.LocalReport.Render("Word", null, out mimeType, out encoding, out extension, out streams, out warnings);
//if (saveFileDialog.ShowDialog() == DialogResult.OK)
//{
saveFileDialog.FileName = "123.doc";
var filename = saveFileDialog.FileName;
System.IO.FileStream file = new FileStream(filename, FileMode.Create);
file.Write(bytes, 0, bytes.Length);
file.Close();
//}
答案 2 :(得分:-1)
layout.addView(button, buttonDetails);<br/>
这是什么布局? 如果其LinearLayout的方向垂直,那么它将不会重叠,在这种情况下,您不需要提及RelativeLayout.BELOW部分。