我意识到有许多相关的问题,但我正在寻找这个具体的答案。以下代码是我在应用程序中的主要活动的XML。现在我的问题。我希望能够动态地改变水平视图的内容。这将涉及清除视图以及添加新视图。当我尝试为线性布局分配ID时,我究竟该怎么做以及访问其中的线性布局我遇到了一个错误,说它无法接受类型字符串的id。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
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=".MainActivity" >
<TextView
android:id="@+id/txtClassification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Classification:<>"
android:textAppearance="?android:attr/textAppearanceLarge"
tools:ignore="HardcodedText" />
<Spinner
android:id="@+id/spinGoto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_marginBottom="56dp" />
<Button
android:id="@+id/btnBack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:text="Go Back"
tools:ignore="HardcodedText" />
<Button
android:id="@+id/btnSelect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:text="Select"
tools:ignore="HardcodedText" />
<HorizontalScrollView
android:id="@+id/gallery"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/txtClassification"
android:layout_alignRight="@+id/spinGoto"
android:layout_below="@+id/txtClassification" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
</LinearLayout>
</HorizontalScrollView>
<ImageView
android:id="@+id/myImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</RelativeLayout>
非常感谢所有帮助!
答案 0 :(得分:0)
您必须使用LinearLayout
,因为HorizontalScrollView
只能有一个直接孩子。
<HorizontalScrollView
android:id="@+id/gallery"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/txtClassification" >
<LinearLayout
android:id="@+id/yourLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
</LinearLayout>
</HorizontalScrollView>
然后以编程方式访问它以添加或删除视图
public void addView(View v) {
LinearLayout yourLayout = (LinearLayout) findViewById(R.id.yourLayout);
yourLayout.addView(v);
}
public void clearLayout() {
LinearLayout yourLayout = (LinearLayout) findViewById(R.id.yourLayout);
yourLayout.removeAllViews();
}
public void removeView(View v) {
LinearLayout yourLayout = (LinearLayout) findViewById(R.id.yourLayout);
yourLayout.removeView(v);
}
希望这会有所帮助
答案 1 :(得分:0)
id具有预定格式。在"@+id/"
语法后输入所需的名称。示例android:id="@+id/layout"
。
然后在代码中获取HorizontalScrollView的LinearLayoutins:
LinearLayout layout = findViewById(R.id.layout);
要向布局添加视图,请调用布局的 adView()。例如:
//add 5 buttons
for (int i = 1; i <= 5 ; i++){
Button btn = new Button(this);
btn.setId(i);
btn.setText(i+"");
layout.addView(btn);
}
要从布局调用 removeView()
中删除视图//remove button nr. 3
Button btn3 = layout.findViewById(3);
layout.removeView(btn3);
HorizontalScrollView负责处理所有事情,你只需要填充和组织嵌套的LinearLayout中的元素。
祝你好运!