人生难得几回搏,此时不搏待何时。这篇文章主要讲述android如何改变 宽度和高度相关的知识,希望能为你提供帮助。
我正在制作一个<
layer-list>
for drawable。
我有我的背景图片,我希望第二层更小,但似乎我在android:layer_width
和android: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:width
的android:height
和Drawable
与android:layout_width
s的android:layout_height
和View
类似,不像它们既不能设置为match_parent
也不能设置wrap_content
,但是你可以通过将属性match_parent
设置为android:gravity
或left|right
(用于匹配父级的宽度)来实现start|end
的相同行为。或者top|bottom
(用于匹配父母的身高)。不幸的是,这些属性仅在API 23之后可用。
但是,考虑到上面的方法我建议用
match_parent
和android:width
和android: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:height
和android:layout_width
而不是android:layout_height
和mToolbar.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
推荐阅读
- Android(如何按下软键盘上方的按钮)
- 在google appengine上部署ruby + sinatra应用程序
- 引起(java.lang.IllegalStateException:未找到所需的密钥[datasource.sampleapp.hibernate.dialect])
- 用于打开Watch Watch以配对Apple Watch的URL方案
- Apple在应用程序中拒绝了facebook登录应用程序
- 使用VB.NET向android模拟器发送通知获取错误401
- 在Android Studio中渲染导航抽屉预览中的问题
- 根据maxWidth,Android TextView文本无法正确换行
- 使用Android Jetpack导航时如何防止导航