我尝试使用ImageView + TextView的布局,也只使用带有CompoundDrawable的TextView,但无法使TextView的文本高度与ImageView的高度对齐。这就是我所拥有的:
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/default_padding" />
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/image"
android:layout_alignBottom="@+id/image"
android:layout_toRightOf="@+id/image"
android:layout_marginRight="@dimen/default_padding" />
</RelativeLayout>
答案 0 :(得分:1)
做起来并不是很简单......但是我尝试了并提出了这个解决方案,但要注意,这样做肯定不是定义UI的简洁方法。我宁愿将字体大小设置为适合的东西,而不是ImageView的大小。
所以这是它的工作原理:
在布局中,另外将此参数设置为TextView以禁用其他填充:
android:includeFontPadding="false"
在您的Activity中,您必须在OnGlobalLayoutChangeListener的帮助下设置字体大小,因为要获得视图的大小,必须首先进行布局。在我们改变字体大小之前我们需要大小(这里简化为简短):
private boolean layouted = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.some_layout);
final TextView t = (TextView) findViewById(R.id.name);
final ImageView i = (ImageView) findViewById(R.id.image);
t.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//check if already did this, as changing the textSize will cause another layout to happen
if(!layouted){
t.setTextSize(TypedValue.COMPLEX_UNIT_PX, i.getHeight());
layouted=true;
}
}
});
答案 1 :(得分:1)
试试这种方式,希望这可以帮助您解决问题。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="demo text demo text demo textdemo textdemo textdemo textdemo textdemo textdemo textdemo textdemo textdemo textdemo textdemo textdemo text demo textdemo textdemo textdemo"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:src="@drawable/ic_launcher"/>
</LinearLayout>