水平滚动查看一个孩子(Eclipse IDE,Android)

时间:2013-11-19 07:21:45

标签: android eclipse

我意识到有许多相关的问题,但我正在寻找这个具体的答案。以下代码是我在应用程序中的主要活动的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:&lt;>"
           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>

非常感谢所有帮助!

2 个答案:

答案 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"

然后在代码中获取Horizo​​ntalScrollView的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);

Horizo​​ntalScrollView负责处理所有事情,你只需要填充和组织嵌套的LinearLayout中的元素。

祝你好运!