我尝试使用Layout Inflater,这是有效的。然后尝试在布局视图中定义对象的id被夸大了。但是如何在这些布局中获取对象的值或id?这里是xml代码..
XML hidden.xml
<?xml version="1.0" encoding="utf-8"?>
android:id="@+id/hiddenLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Saya teks 1"
android:textAppearance="?android:attr/textAppearanceLarge" />
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CheckBox1" />
<CheckBox
android:id="@+id/checkBox2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CheckBox2" />
<CheckBox
android:id="@+id/checkBox3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CheckBox3" />
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Satu" />
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Dua" />
<RadioButton
android:id="@+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tiga" />
</RadioGroup>
XML Main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
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=".MainActivity" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/add"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".5"
android:text="Add View" />
<Button
android:id="@+id/remove"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".5"
android:text="Remove View" />
</LinearLayout>
<ScrollView
android:id="@+id/ScrollView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:id="@+id/linearhost"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
</LinearLayout>
</ScrollView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="TextView" />
</LinearLayout>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="value" />
爪哇
private int jumlahteks = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View buttonAdd = findViewById(R.id.add);
buttonAdd.setOnClickListener(this);
View buttonRemove = findViewById(R.id.remove);
buttonRemove.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId())
{
case R.id.add:
jumlahteks = jumlahteks + 1;
//Check if the Layout already exists
//LinearLayout hiddenLayout = (LinearLayout)findViewById(R.id.hiddenLayout);
//Inflate the Hidden Layout Information View
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout myLayout = (LinearLayout)findViewById(R.id.linearhost);
View hiddenInfo = inflater.inflate(R.layout.hidden, myLayout, false);
TextView myTextView = (TextView) hiddenInfo.findViewById(R.id.textView1);
// Update the TextView Text
myTextView.setId(jumlahteks);
myTextView.setText(jumlahteks);
myLayout.addView(hiddenInfo);
//Get References to the TextView
break;
case R.id.remove:
View myView = findViewById(R.id.hiddenLayout);
ViewGroup parent = (ViewGroup) myView.getParent();
parent.removeView(myView);
break;
// More buttons go here (if any) ...
}
如何在hidden.xml中获取对象的id或值?并设置值,即时工作与此布局inflater创建dinamycaly视图和抓取每个对象的值在该视图被夸大。感谢您的帮助和建议..
答案 0 :(得分:0)
我不完全确定你在这里要做什么,但听起来你想在你的主布局中使用hiddenLayout,并希望它有时被隐藏。尝试使用include标记在main.xml的适当位置包含hiddenLayout,使用android:id =“”为它设置一个名称,然后你就可以在其他元素上使用findViewById。要隐藏或显示它,请调用setVisibility(VISIBLE或INVISIBLE)。
编辑:您的hidden.xml没有根类型。看起来你错过了一个“&lt;”同样,也许你只是在复制/粘贴时没有包含它。我会创建一个Hidden.java类,它是一种布局类型的子类,比如一个LinearLayout,并且具有你想要的字段的访问器。然后,您可以在xml中使用以下子类。然后你可以打电话
Hidden hiddenLayout = inflater.inflate(R.layout.hidden, null)
获取隐藏的布局,然后使用hidden.getTextView1()等访问器来访问内部的东西。
您也可以将根类型设为LinearLayout并使用
LinearLayout hiddenLayout = inflater.inflate(R.layout.hidden, null)
TextView text = hiddenLayout.findViewById(R.id.TextView1)
但是IMO子类化更好,因为它允许您将隐藏布局的行为封装在xml中可能的范围之外。