将图像动态插入水平滚动视图

时间:2012-08-12 15:25:57

标签: android xml scrollview horizontalscrollview

我正在开发一个Android应用程序,它将从xml文件中获取数据并将其插入listview

但我想更改UI而不是垂直显示列表视图中的数据,我想在滚动视图中水平显示它们

我的问题是,如果我有以下代码

<HorizontalScrollView 
        android:id="@+id/horizontalScrollView1"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:scrollbars="none">

        <LinearLayout 
            android:id="@+id/linearLayout1"
            android:orientation="horizontal" 
            android:layout_height="wrap_content"
            android:layout_width="wrap_content" android:padding="2dp">

            <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
            <ImageView
                android:layout_width="wrap_content" 
                android:id="@+id/imageView11"
                android:layout_height="wrap_content" 
                android:src="@drawable/i1"/>
            <TextView
                android:id="@+id/TextOnImage11"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Fantasia Reviews"
                android:layout_alignParentBottom="true" 
                android:paddingLeft="2dp" 
                android:background="@drawable/txt_bg" 
                android:textSize="10dp" 
                android:paddingTop="2dp" 
                android:textColor="#FFFFFF"
                android:textStyle="bold" 
                android:width="0dp" />
            </RelativeLayout>
      </LinearLayout>
    </HorizontalScrollView>

如何从java代码中动态添加更多图像和文本?

谢谢

1 个答案:

答案 0 :(得分:0)

我认为您的意图是在您在代码示例中显示的RelativeLayout之后直接添加另一个RelativeLayout及其自己的图像/文本对?

在这种情况下,因为它不仅仅是添加一个视图,我会花时间创建一个代表你想要插入的“结构”的类。

e.g。一个名为“TextImagePair”的类,它扩展了“RelativeLayout”

public class TextImagePair extends RelativeLayout {
    public ReportDetailRow(Context context){
        super(context);
    }

    public TextImagePair(Context context,AttributeSet attributeSet){
        super(context, attributeSet);
    }

    public TextImagePair(Context context,AttributeSet attributeSet, int i){
        super(context, attributeSet,i);
    }

    public TextImagePair(Context context, AttributeSet attributeSet, String text, int drawableResource) {
        super(context, attributeSet);

        // Inflate the layout
        LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        inflator.inflate(R.layout.lay_textimagepair, this);

        TextView tvText = (TextView)this.findViewById(R.id.layTextImagePair_textview);
        tvText.setText(text);

        ImageView imgView = (ImageView)this.findViewById(R.id.layTextImagePair_imageview);
        imgView.setDrawable(getResources().getDrawable(drawableResource));
    }
}

然后你会有一个单独的xml布局文件(在我的代码中名为lay_textimagepair),它只包含文本和图像视图。

然后,您可以在运行时使用以下内容将其添加到视图中:

LinearLayout parent = (LinearLayout)findViewById(R.id.layParentView_liniearlayout);
TextImagePair tip = new TextImagePair(null,null,"Blah Blah Blah",R.drawable.something);
parent.addView(tip);

很抱歉,如果上面的代码中有任何错误,但我正在编写它而无法访问Eclipse!