我正在尝试以编程方式在水平滚动视图内的imageview中添加文本视图。但是,这似乎不起作用。 在不滚动的RelativeLayout中打开示例图像:
以下是水平滚动的示例图像: 这是我的xml布局:
<HorizontalScrollView android:id="@+id/home_horizontal_scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/middle_menu_title" >
<LinearLayout android:id="@+id/home_linear_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
</LinearLayout>
</HorizontalScrollView>
在我的测试代码中:
LinearLayout layout = (LinearLayout)findViewById(R.id.home_linear_layout);
for(int i = 0 ; i < 10; i++){
ImageView myView = new ImageView(this);
myView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
myView.setAdjustViewBounds(true);
myView.setScaleType(ScaleType.FIT_XY);
myView.setPadding(0, 2, 2, 0);
myView.setImageResource(R.drawable.render);
layout.addView(myView);
TextView text = new TextView(this);
text.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 50));
text.setBackgroundColor(Color.parseColor("#4000"));
text.setTextColor(Color.WHITE);
text.setGravity(Gravity.CENTER);
text.setText("Header Title");
layout.addView(text);
我也尝试在水平滚动视图中使用相对布局而没有任何成功。 在如下的简单相对布局中,我能够显示标题和图像,但不能在水平滚动视图中显示
<RelativeLayout android:id="@+id/top_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/menu_title"
android:background="@drawable/background_gradient">
<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="2dip"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:adjustViewBounds="true"
android:scaleType="fitXY"
android:src="@drawable/render" />
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:background="#4000"
android:gravity="center"
android:text="Image Title"
android:textColor="#FFFFFF" />
</RelativeLayout>
有任何建议吗?
答案 0 :(得分:0)
您的布局存在问题:
你对LinearLayout父视图说要根据其子节点获取宽度:
使用android:layout_width="wrap_content"
然后你说孩子们根据父母的宽度:
使用LayoutParams.MATCH_PARENT
你必须明白它不能给出可预测的结果,因为它们彼此依赖。
我认为如果您在子项上将宽度设置为LayoutParams.WRAP_CONTENT,它将解决问题:
ImageView myView = new ImageView(this);
myView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));
myView.setAdjustViewBounds(true);
myView.setScaleType(ScaleType.FIT_XY);
myView.setPadding(0, 2, 2, 0);
myView.setImageResource(R.drawable.render);
layout.addView(myView);
TextView text = new TextView(this);
text.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 50));
text.setBackgroundColor(Color.parseColor("#4000"));
text.setTextColor(Color.WHITE);
text.setGravity(Gravity.CENTER);
text.setText("Header Title");
layout.addView(text);
编辑:从问题看到编辑,LinearLayout不能是一个好的答案,因为它不允许儿童重叠。
答案 1 :(得分:0)
您可以使用compoud drawables轻松地将图像添加到 TextView ,而无需将其放入新的父版面中:
myTextView.setCompoundDrawablesWithIntrinsicBounds(R.drawable.left, 0, 0, 0);
将0删除为drawable, 您可以在任何一侧(左侧,顶部,右侧,底部)放置一个抽屉 请参阅文档here,它可能会对您有所帮助。 drawable的大小必须符合您的需求,因为它使用(如它所说)可绘制的内在边界。
如果 LinearLayout 中没有任何其他视图,而不是图片和文字,建议使用复合drawable进行优化。
编辑:看到问题中的编辑:如果您需要重叠图像和文本,则复合可绘制不能作为答案。