layout能使用getDrawable().getIntrinsicWidth()
时间: 2023-12-03 10:02:58 浏览: 54
在layout中,getDrawable().getIntrinsicWidth()并不能直接使用。因为这个方法是定义在Drawable类中的,而在layout中,我们通常使用的是View类及其子类,它们并没有直接提供这个方法。如果你想要获取一个View中的Drawable对象的固有宽度,你可以通过以下方式之一实现:
1. 通过findViewById()方法获取到View对象,然后通过View对象的getBackground()、getCompoundDrawables()等方法获取到对应的Drawable对象,最后使用getDrawable().getIntrinsicWidth()方法获取其固有宽度。
2. 直接在Java代码中创建一个Drawable对象,然后使用getDrawable().getIntrinsicWidth()方法获取其固有宽度,例如:
```
Drawable drawable = getResources().getDrawable(R.drawable.my_drawable);
int intrinsicWidth = drawable.getIntrinsicWidth();
```
这里的R.drawable.my_drawable是一个Drawable类型的资源,你可以替换成你自己的资源。
相关问题
Android studio使用Snackbar点击按钮带图标方式显示消息提示
要在Android Studio中使用Snackbar点击按钮带图标方式显示消息提示,需要遵循以下步骤:
1.在app/build.gradle文件中添加以下依赖项:
```
implementation 'com.android.support:design:28.0.0'
```
这将添加支持Snackbar的Material Design库。
2.在布局文件中添加一个Button和一个Snackbar容器View:
```
<RelativeLayout
android:id="@+id/main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/my_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Show Snackbar"/>
<LinearLayout
android:id="@+id/snackbar_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
```
3.在Activity中获取Button和Snackbar容器View的引用:
```
Button myButton = findViewById(R.id.my_button);
View snackbarContainer = findViewById(R.id.snackbar_container);
```
4.在Button的onClick事件中,创建Snackbar实例并设置消息内容和图标:
```
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar snackbar = Snackbar.make(snackbarContainer, "This is a Snackbar message", Snackbar.LENGTH_LONG);
//设置Snackbar中的图标
Drawable icon = getResources().getDrawable(R.drawable.ic_info_outline);
icon.setBounds(0, 0, icon.getIntrinsicWidth(), icon.getIntrinsicHeight());
TextView textView = snackbar.getView().findViewById(android.support.design.R.id.snackbar_text);
textView.setCompoundDrawables(icon, null, null, null);
textView.setCompoundDrawablePadding(getResources().getDimensionPixelOffset(R.dimen.snackbar_icon_padding));
snackbar.show();
}
});
```
这将创建一个Snackbar实例,将其附加到Snackbar容器View中,并在Snackbar消息中添加一个带有指定图标的TextView。
现在,当用户点击按钮时,Snackbar将显示在屏幕底部,并显示指定的消息和图标。
Android Studio怎么插入图片
在Android Studio中插入图片的步骤如下:
1. 将图片复制到res文件夹下的drawable文件夹中。
2. 在布局文件中使用ImageView标签来显示图片,例如:
```xml
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/image_name" />
```
其中,image_name是你复制到drawable文件夹下的图片的名称(不需要加文件后缀名)。
3. 如果需要在TextView中插入图片,可以使用SpannableString和ImageSpan来实现。具体实现方法可以参考以下代码:
```java
SpannableString spannableString = new SpannableString("文字和图片");
Drawable drawable = getResources().getDrawable(R.drawable.image_name);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
ImageSpan imageSpan = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);
spannableString.setSpan(imageSpan, 2, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
textView.setText(spannableString);
```
其中,image_name是你复制到drawable文件夹下的图片的名称(不需要加文件后缀名),2和3分别表示插入图片的起始位置和结束位置。