我有一个水平LinearLayout:ImageView / TextView / ImageView。
我已经以这种形式分配了这些项目的权重:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="1" >
<ImageView
android:id="@+id/vboxrow_icono"
android:layout_width="0dp"
android:layout_height="@dimen/viewboxrow_icon_height"
android:layout_gravity="center_vertical"
android:layout_marginLeft="@dimen/viewboxrow_icon_margin"
android:layout_marginRight="@dimen/viewboxrow_icon_margin"
android:layout_weight="0.1" />
<TextView
android:id="@+id/vboxrow_texto"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textSize="@dimen/viewbox_desc_size"
android:text="Title"
android:layout_weight="0.85" />
<ImageView
android:id="@+id/vboxrow_favorito"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="@dimen/viewboxrow_icon_margin"
android:layout_marginRight="@dimen/viewboxrow_icon_margin"
android:src="@drawable/icono_listado_nofavorito"
android:layout_weight="0.05" />
</LinearLayout>
一切都很好,但是当文字非常大时,图像不在最后,因为在他的位置它是文本。如果我为这张图片加了重量,我不知道为什么会出现这种情况......如果文字非常大,我怎么划分它呢?例如。 3分或其他因为我已经把'wrap_content&#39;在TextView中的高度。
两种情况:
1)普通文本:ImageView /文本视图/图像视图
2)大文:ImageView / Text Vieeeeeeeeeeeeew
非常感谢。
答案 0 :(得分:0)
您始终可以选择调整代码中的组件大小,这将为您提供所需的百分比,但能够修复TextView的宽度。我可能会使用@ jujux789中的建议并使用RelativeLayout或其他一些自定义组件。
ImageView iv1 = (ImageView) findViewById(R.id.image1);
ImageView iv2 = (ImageView) findViewById(R.id.image2);
TextView tv1 = (TextView) findViewById(R.id.text1);
DisplayMetrics displayMetrics = this.getResources().getDisplayMetrics();
float dpWidth = displayMetrics.widthPixels / displayMetrics.density;
float width1 = dpWidth * 0.1f;
float width2 = dpWidth * 0.85f;
float width3 = dpWidth * 0.5f;
ViewGroup.LayoutParams lp1 = iv1.getLayoutParams();
lp1.width = (int)width1;
iv1.setLayoutParams(lp1);
ViewGroup.LayoutParams lp2 = tv1.getLayoutParams();
lp2.width = (int)width2;
tv1.setLayoutParams(lp2);
ViewGroup.LayoutParams lp3 = iv2.getLayoutParams();
lp3.width = (int)width3;
iv2.setLayoutParams(lp3);