如何在另一个LinearLayout之后添加LinearLayout?
我创造了这个布局:如何在另一个LinearLayout之后添加LinearLayout?
<!-- create_structure.xml -->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ly_create_structure"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
这等
<!-- add_level_in_structure.xml -->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ly_level"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/txt_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1#"
android:layout_weight="1"/>
<EditText
android:id="@+id/edit_sb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:layout_weight="3">
<requestFocus />
</EditText>
<ImageButton
android:id="@+id/add_level"
android:scaleType="fitXY"
android:layout_width="48dip"
android:layout_height="48dip"
android:cropToPadding="false"
android:paddingLeft="10dp"
android:src="@drawable/ic_menu_add" />
</LinearLayout>
我wanto点击在alertDialog“添加水平”(每级中后以编程方式添加LinearLayout.ly_level在LinearLayout.ly_create_structure LinearLayout.ly_level有一个显示alertDialog的链接)。
的代码是:
public class CreateStructureActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.create_structure);
addLevel();
}
private void addLevel() {
LinearLayout mainActivityLayout = (LinearLayout)findViewById(R.id.ly_create_structure);
LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout ly = (LinearLayout) li.inflate(R.create_structure, null);
ImageButton ib = (ImageButton) ly.findViewById(R.id.add_level);
ib.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog();
}
});
mainActivityLayout.addView(ly);
}
private void showDialog() {
final CharSequence[] items = {"Add Level", "Delete"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Actions");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
switch(item){
case 0:
addLivello();
break;
case 1:
delete();
break;
}
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
有了这个代码,我可以添加的LinearLayout作为最后一个,但我想它包含按钮点击,显示一个AlertDialog中的LinearLayout后添加。你能帮我实施吗?
UPDATE 1: 我无法理解如何获取索引。我试图用这种方式:
private void addLevel() {
LinearLayout mainActivityLayout = (LinearLayout)findViewById(R.id.ly_create_structure);
LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout ly = (LinearLayout) li.inflate(R.create_structure, null);
ImageButton ib = (ImageButton) ly.findViewById(R.id.add_level);
/**
* New code to get index
*/
ViewGroup vg = (ViewGroup) ib.getParent();
int index = mainActivityLayout.indexOfChild(vg);
ib.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog();
}
});
mainActivityLayout.addView(ly, index);
}
UPDATE 2: 我解决了这个问题。余移动下面的代码中的ShowDialog()
ViewGroup vg = (ViewGroup) ib.getParent();
int index = mainActivityLayout.indexOfChild(vg);
可以在Dev Android
这需要的视点索引参数以及使用方法。
private void addLevel(int index) {
LinearLayout mainActivityLayout = (LinearLayout)findViewById(R.id.ly_create_structure);
LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout ly = (LinearLayout) li.inflate(R.create_structure, null);
ImageButton ib = (ImageButton) ly.findViewById(R.id.add_level);
ib.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog();
}
});
mainActivityLayout.addView(ly, index);
}
好,所有的 首先,你会得到视图对象,然后创建的LinearLayout对象,你是做在我们当前的代码,并添加viewObject.addView(“的LinearLayout对象”);.我认为,这是对你有帮助..
增加了一个更新也许我不明白..但我想要一个基于LinearLayout索引的解决方案 – Webman 2012-02-17 14:26:58
我在原始消息 – Webman 2012-02-17 13:29:55