您好我正在尝试在LinearLayout
上设置背景图片,首先我需要使用shape
标记对其进行舍入,并调用setBackgroundResource
使其圆整但现在我应该如何在同一LinearLayout
layout_rounded.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF"/>
<stroke android:width="3dip" android:color="#B1BCBE" />
<corners android:radius="10dip"/>
<padding android:left="0dip" android:top="0dip" android:right="0dip" android:bottom="0dip" />
</shape>
我做了这个
linearLayout.setBackgroundResource(R.drawable.layout_rounded);
这里要设置LinearLayout
的背景,然后我必须调用setBackgroundDrawable
但是在调用它之后,它会设置drawable但是它再次取消设置LinearLayout
的形状。 / p>
我没有res中的drawable,我从URL获取的背景然后尝试设置
你能看看如何实现这个目标吗?
提前致谢
答案 0 :(得分:1)
在android中使用 Shape 来制作圆角
创建名为roundcorner.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#33DDFF" />
<corners android:radius="4dp" />
</shape>
在ImageButton
添加此属性android:background="@drawable/roundcorner"
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton"
android:layout_marginTop="57dp"
android:src="@drawable/friends"
android:background="@drawable/roundcorner"
android:padding="1dp"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/imageButton2"
android:layout_marginRight="62dp" />
或强>
使用图片视图集android:src = "your image"
,android:background= "your shape "
和android:clickable="true"
答案 1 :(得分:0)
试试这种方式。希望这会对你有所帮助。
请注意,我在此处使用FrameLayout
而不是LinearLayout
,以达到您的要求。
activity_main.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</FrameLayout>
<强> MainActivity.java 强>
public class MainActivity extends Activity {
FrameLayout frame;
protected void onCreate(Bundle paramBundle) {
super.onCreate(paramBundle);
setContentView(R.layout.activity_main);
frame = (FrameLayout) findViewById(R.id.frame);
frame.setBackgroundResource(R.drawable.layout_round); // set your rounded background here
frame.setForeground(getResources().getDrawable(R.drawable.ic_launcher)); // set your background image here
}
}
答案 2 :(得分:0)
最后,我通过简单地将位图制作为圆形来完成此操作。现在没有必要将LinearLayout
形状赋予圆角,因为我设置为LinearLayout
的位图是圆形的,使LinearLayout
形状变为圆形。
import android.content.res.Resources;
import android.graphics.Paint;
import android.graphics.BitmapShader;
import android.graphics.RectF;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Shader;
import android.graphics.drawable.BitmapDrawable;
public class RoundedCornersDrawable extends BitmapDrawable {
private final BitmapShader bitmapShader;
private final Paint p;
private final RectF rect;
private final float borderRadius;
public RoundedCornersDrawable(final Resources resources, final Bitmap bitmap) {
super(resources, bitmap);
bitmapShader = new BitmapShader(getBitmap(), Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
final Bitmap b = getBitmap();
p = getPaint();
p.setAntiAlias(true);
p.setShader(bitmapShader);
final int w = b.getWidth();
final int h = b.getHeight();
rect = new RectF(0, 0, w, h);
borderRadius = 0.15f * Math.min(w, h);
}
@Override
public void draw(final Canvas canvas) {
canvas.drawRoundRect(rect, borderRadius, borderRadius, p);
}
}
这对我有帮助并且为我正在寻找的东西工作。