我已经看到很多方法可以将textview与imageview对齐,但是当文本比图像大时,以及当你希望文本占据所有父布局时,我都没有找到。我的布局是:
<RelativeLayout
android:id="@+id/accordion_toogle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone">
<ImageView
android:id="@+id/accordion_image"
android:layout_width="@dimen/accor_img_wid"
android:layout_height="@dimen/accor_img_hei" />
<TextView
android:id="@+id/accordion_msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/accordion_image"
android:paddingLeft="5dp"/>
</RelativeLayout>
在这种情况下,假设图像占据RelativeLayout的一半,一旦imageView完成,accordion_msg将继续占据relativeLayout的一半。
你了解我吗?我表达得好吗?有什么建议??谢谢。
修改 帮助我尝试做的照片:
粉红色正方形是图片,紫色和白色矩形是文本必须的位置,但直到现在,紫色是空的。文字只占据白色方块。
编辑2
我正在尝试@Elltz所说的......但是我无法做出我想要的东西,我有这个代码:
draw.setBounds(0, 0, width, height); //width: 128 height: 172 in this case
textview.setCompoundDrawablesRelative(draw, null, null, null);
但是没有显示图像,我尝试了很多其他的东西,比如:
textview.setCompoundDrawablesRelative(null, draw, null, null);
图像保留在文本的顶部。我试过的其他不同之处是:
textview.setCompoundDrawables(draw, null, null, null);
图像在左侧...但它在中心垂直对齐,图像的顶部和底部是空白的(没有文字,没有图片......没有任何东西)。我尝试使用重力左,重力顶部,RelativeLayout ......
将父级更改为LinearLayoutOooppsss !!!现在布局是这样的:
<RelativeLayout
android:id="@+id/accordion_toogle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone">
<TextView
android:id="@+id/accordion_msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/accordion_image"
android:paddingLeft="5dp"/>
</RelativeLayout>
*父级的可见性并不重要,我以编程方式更改它。
谢谢。
答案 0 :(得分:0)
好的......经过艰苦的实验,搜索 - &gt; attempting-&GT; failing-&GT; searching-&GT; attempting-&GT; failing-&GT; searching-&GT; attempting-&GT;成功;) 在this stack question @K_Anas给出了解决方案......我将在下一种情况下键入我对此情况的处理方式(此外,可以处理文本上的链接,使用Html.fromHtml解析它并保留链接SpannableString之后的属性:
布局
<RelativeLayout
android:id="@+id/accordion_toogle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="6dp"
android:visibility="gone"
android:gravity="top">
<ImageView
android:id="@+id/accordion_image"
android:layout_width="@dimen/img_width"
android:layout_height="@dimen/img_height"
android:src="@drawable/default_image"/>
<TextView
android:id="@+id/accordion_msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="5dp"/>
</RelativeLayout>
Java代码
final TextView msgView = (TextView)view_aux.findViewById(R.id.accordion_msg);
String msg_text = dbStructure.getMsg();
if(msg_text.contains("href=\"")) {
String[] msg_aux = msg_text.split("href=\"");
if (!msg_aux[1].toLowerCase().startsWith("http"))
msg_aux[1] = "http://" + msg_aux[1];
msg_text = msg_aux[0] + "\"href=\"" + msg_aux[1];
}
msgView.setText(Html.fromHtml(msg_text));
msgView.setMovementMethod(LinkMovementMethod.getInstance());
int lines = (int)Math.round(height / msgView.getLineHeight());
SpannableString ss = new SpannableString(msgView.getText());
ss.setSpan(new MyLeadingMarginSpan2(lines, width+10), 0, ss.length(), 0);
msgView.setText(ss);
在这种情况下,宽度和高度是ImageView的测量。