android布局:这个标签及其子元素可以被一个<TextView />和一个复合的drawable所取代
当我在特定的XML文件上运行布局时,我得到这个:
This tag and its children can be replaced by one <TextView/> and a compound drawable
对于下面的xml代码应该做什么改变:
<LinearLayout android:id="@+id/name_layout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:background="@drawable/grouplist_single_left_grey_area" > <ImageView android:id="@+id/photo_image" android:layout_width="@dimen/thumbnail_width" android:layout_height="@dimen/thumbnail_height" android:paddingBottom="5dip" android:paddingTop="5dip" android:paddingRight="5dip" android:paddingLeft="5dip" android:layout_marginRight="5dip" android:clickable="true" android:focusable="true" android:scaleType="fitCenter" android:src="@*android:drawable/nopicture_thumbnail" android:background="@drawable/photo_highlight" /> <TextView android:id="@+id/name" android:paddingLeft="5dip" android:layout_weight="1" android:layout_width="0dip" android:layout_height="wrap_content" android:gravity="center_vertical" android:textAppearance="?android:attr/textAppearanceLarge" /> </LinearLayout>
这是它在屏幕上的样子:
相机图标是默认设置。 点击它会让用户select另一个图像。
为了扩大罗曼盖伊的答案,这里是一个例子。
之前:
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:padding="5dp" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="My Compound Button" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/my_drawable" /> </LinearLayout>
后:
<TextView android:layout_marginTop="10dp" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="My Compound Button" android:drawableRight="@drawable/my_drawable" android:padding="5dp" />
通过使用TextView的setCompoundDrawable*()
方法或者使用android:drawableLeft
将TextView
和ImageView
合并成一个。
以为我会尝试为此获得一些额外的puntos:您可以使用android:drawablePadding
在图像和文本之间添加填充。 https://stackoverflow.com/a/6671544/1224741
有时候可以用一个TextView
replaceImageView
(或多个)和TextView
,并使用复合drawable(s)。 使用本地API和TextViewRichDrawable库可以应用于复合绘制的参数不多 ,但是如果您可以pipe理一个TextView而不是使用LinearLayout,则应该使用它 。
可应用于复合绘图的属性和参数列表:
大小:( 是的,真的 ):
<com.tolstykh.textviewrichdrawable.TextViewRichDrawable android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Some text" app:compoundDrawableHeight="24dp" app:compoundDrawableWidth="24dp"/>
即使将vector资源设置为可绘制:
<com.tolstykh.textviewrichdrawable.TextViewRichDrawable android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Some text" app:drawableTopVector="@drawable/some_vector_drawble" app:drawableEndVector="@drawable/another_vector_drawable" />
Drawable的填充使用本地API android:drawablePadding
– > 链接
这里是一个例子:
包含ImageView
和TextView
LinearLayout
可以更有效地处理为复合可绘制(单个TextView
,使用drawableTop
, drawableLeft
, drawableRight
和/或drawableBottom
属性在文本旁边绘制一个或多个图像)。
如果这两个小部件彼此之间有空白,则可以用drawablePadding
属性replace。
有一个lint quickfix在Eclipse插件中执行这个转换。
来自:Android官方API文档!
当我遵循上面的代码时,TextView中的文本没有正确设置。 您需要将其重力设置为中心以实现问题中显示的内容。
textview看起来像这样:
<TextView android:id="@+id/export_text" android:layout_width="match_parent" android:layout_height="match_parent" android:drawableLeft="@drawable/up_arrow" android:drawableStart="@drawable/up_arrow" android:gravity="center|start" android:text="....." android:textSize="@dimen/font_size15" > </TextView>
如果您不想更改ImageView和TextView,则可以将AndroidManifest.xml中的版本更改为:
<uses-sdk` android:minSdkVersion="8" android:targetSdkVersion="18" />
如果您的版本是android:targetSdkVersion =“17”,请将其更改为“18”。
希望这会纠正。 我做到了,做对了
另一种方法是将ViewImageembedded另一个LinearLayout(允许使用单独的id处理):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/blue_3" android:layout_gravity="center_horizontal" android:paddingTop="16dp" /> </LinearLayout> <TextView android:id="@+id/tvPrompt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:paddingTop="16dp" android:text="@string/xy" />
This tag and its children can be replaced by one <TextView/> and a compound drawable <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical" > <ImageView android:id="@+id/imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:focusable="false" android:contentDescription="." android:padding="3dp" android:src="@drawable/tab_home_btn"> </ImageView> <TextView android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="首页" android:textSize="10sp" android:textColor="#ffffff"> </TextView> </LinearLayout>