android如何改变 宽度和高度

人生难得几回搏,此时不搏待何时。这篇文章主要讲述android如何改变 宽度和高度相关的知识,希望能为你提供帮助。
我正在制作一个< layer-list> for drawable。
我有我的背景图片,我希望第二层更小,但似乎我在android:layer_widthandroid:layer_height里面写的并不重要。
第二层大小仍然相同。
【android如何改变 宽度和高度】这是我的xml:

< ?xml version="1.0" encoding="utf-8"?> < layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> < item android:drawable="@drawable/picuser" android:layout_width="50dp" android:layout_height="50dp" /> < item android:drawable="@drawable/ic_launcher" android:layout_width="10dp" android:layout_height="10dp" /> < /layer-list>

答案我希望这会让你朝着正确的方向前进:
< ?xml version="1.0" encoding="utf-8"?> < layer-list xmlns:android="http://schemas.android.com/apk/res/android"> < item android:drawable="@drawable/picuser"/> < item> < bitmap android:src="https://www.songbingjia.com/android/@drawable/ic_launcher" android:gravity="center" /> < /item> < /layer-list>

正如你可以看到here,< item> 没有layout_width / layout_height属性。
另一答案这是一种解决方法,但它对我有用。 您可以使用填充以使第二个drawable更小。

< item android:drawable="@drawable/circyle" /> < item android:drawable="@drawable/plus" android:top="10dp" android:bottom="10dp" android:right="10dp" android:left="10dp" />


另一答案不像有人说的那样,< item> 也有宽度和高度属性。感谢@Entreco发布的演示。 android:widthandroid:heightDrawableandroid:layout_widths的android:layout_heightView类似,不像它们既不能设置为match_parent也不能设置wrap_content,但是你可以通过将属性match_parent设置为android:gravityleft|right(用于匹配父级的宽度)来实现start|end的相同行为。或者top|bottom(用于匹配父母的身高)。
不幸的是,这些属性仅在API 23之后可用。
但是,考虑到上面的方法我建议用match_parentandroid:widthandroid:height属性可用于< size> 元素(必须放在< shape> 中)而没有任何API限制,你可以使用一个简单的解决方法:
< layer-list xmlns:android="http://schemas.android.com/apk/res/android"> < item> < shape android:shape="rectangle"> < size android:width="152dp" android:height="152dp"/> < solid android:color="#00FFFFFF"/> < /shape> < /item> < item> < bitmap android:gravity="left|right|top|bottom" android:src="https://www.songbingjia.com/android/@mipmap/ic_launcher"/> < /item> < /layer-list>

上述解决方案利用了具有大小的< item> (具有透明的< shape> )和未大小的< bitmap> (具有android:gravity),其中left|top|right|bottom设置为< bitmap> 以匹配父母的尺寸。因此,< item> 的实际大小将由同一父母中唯一大小的android:windowBackground的大小决定。
编辑:
感谢@Emil S,他注意到上述解决方案不能用作窗口背景。它只能作为任何视图的背景或前景正常工作。我不知道这种奇怪行为的特殊原因,但我可以猜测,当系统创建一个具有android:width属性指定的背景的窗口时,没有执行布局,因为尚未启动任何进程。因此,我认为,Android最终将在屏幕尺寸上光栅化可绘制并将其拉伸以填充整个窗口。这可以解释如何发生这种情况。
编辑:
@Jo?oCarlos在使用自适应图标(由背景和前景制作的图标,支持矢量绘图)时,指出我的解决方案不起作用(因为它会导致循环继承)。然而,他的观点是无稽之谈,因为自适应图标需要API 26:可以在启动屏幕上直接使用android:height< item android:drawable="@drawable/splash_logo" android:height="100dp" android:width="100dp"/> (他们只需要API 23)。 因此,为了在任何版本的Android中获得任何效果,您需要使用我发布的解决方案区分两个drawable,前者用于API < 23,后者用于API> = 23,使用两个属性正如我在帖子开头所说的那样。
另一答案从API Level 23及更高版本,您可以实际设置项目的宽度和高度
android:width

注意:使用android:heightandroid:layout_width而不是android:layout_heightmToolbar.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { ImageView imageView = (ImageView)mToolbar.findViewById(R.id.logo); if (mToolbar == null) return; int toolbarWidth = mToolbar.getWidth(); int imageWidth = imageView.getWidth(); imageView.setX((toolbarWidth - imageWidth) / 2); } });
另一答案我已经尝试了很多,但我找不到一种可靠的方法来将徽标置于XML布局中。最后,我发现了以下解决方法:
< android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" style="@style/Toolbar" android:layout_width="match_parent" android:layout_height="@dimen/toolbar_height" android:background="@drawable/toolbar_background" android:focusable="false" app:titleTextAppearance="@style/AppTheme.Toolbar.Title"> < ImageView android:id="@+id/logo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="https://www.songbingjia.com/android/@drawable/toolbar_logo" /> < /android.support.v7.widget.Toolbar>

layout_toolbar.xml:
< ?xml version="1.0" encoding="utf-8"?> < !-- The android:opacity=”opaque” line?is critical in preventing a flash of black as your theme transitions. --> < layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque"> < !-- The background color, preferably the same as your normal theme --> < item android:drawable="@android:color/white" /> < item android:height="100dp" android:width="100dp" android:gravity="center"> < bitmap android:src="https://www.songbingjia.com/android/@drawable/ic_launcher_bc_512"/> < /item> < /layer-list>

另一答案试试这个:
qazxswpoi


    推荐阅读