图像视图的圆形背景
Circle background for a imageview
我正在尝试放置三个带有圆形背景的图像视图。我也画了一个圆形的。
但是背景不是圆显示椭圆
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="15dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/contactphone"
android:layout_weight="1"
android:layout_width="wrap_content"
android:src="@drawable/phonecall"
android:layout_margin="10dp"
android:background="@drawable/contact_icon_round"
android:layout_height="75dp" />
<ImageView
android:id="@+id/contactemail"
android:layout_weight="1"
android:layout_width="wrap_content"
android:src="@drawable/mail"
android:layout_margin="10dp"
android:background="@drawable/contact_icon_round"
android:layout_height="75dp" />
<ImageView
android:id="@+id/contactlocation"
android:layout_weight="1"
android:layout_width="wrap_content"
android:src="@drawable/location"
android:layout_margin="10dp"
android:background="@drawable/contact_icon_round"
android:layout_height="75dp" />
android:layout_gravity="fill_vertical" />
</LinearLayout>
圆形可绘制对象:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<solid android:color="@color/white"/>
<size android:width="5dp" android:height="5dp"/>
</shape>
有问题但无法找出错误?
谢谢!
只要您的图像源是正方形,您就可以将所有 Image
的 android:layout_height
属性更改为 wrap_content
。
这样您仍然可以使用 weight
行为。
否则你必须使用固定且相等的宽度和高度并删除重量属性...
利用这个布局,
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="15dp"
android:orientation="horizontal"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="75dp"
>
<ImageView
android:id="@+id/contactphone"
android:layout_width="75dp"
android:src="@drawable/phonecall"
android:layout_margin="10dp"
android:background="@drawable/contact_icon_round"
android:layout_height="75dp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="75dp"
>
<ImageView
android:id="@+id/contactemail"
android:layout_width="75dp"
android:src="@drawable/mail"
android:layout_margin="10dp"
android:background="@drawable/contact_icon_round"
android:layout_height="75dp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="75dp"
>
<ImageView
android:id="@+id/contactlocation"
android:layout_width="75dp"
android:src="@drawable/location"
android:layout_margin="10dp"
android:background="@drawable/contact_icon_round"
android:layout_height="75dp" />
</LinearLayout>
</LinearLayout>
由于宽度和高度不均匀,背景显示为椭圆形。
希望对您有所帮助。
在圆形 imageView 后面绘制带有 2 像素黑色边框的圆形黄色背景 无 XML:
GradientDrawable gd = new GradientDrawable();
gd.setColor(Color.YELLOW); // (no gradient)
gd.setStroke(2, Color.BLACK);
gd.setShape(GradientDrawable.OVAL);
gd.setGradientType(GradientDrawable.RADIAL_GRADIENT);
gd.setGradientRadius(iv.getWidth()/2);
iv.setBackground(gd);
我正在尝试放置三个带有圆形背景的图像视图。我也画了一个圆形的。
但是背景不是圆显示椭圆
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="15dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/contactphone"
android:layout_weight="1"
android:layout_width="wrap_content"
android:src="@drawable/phonecall"
android:layout_margin="10dp"
android:background="@drawable/contact_icon_round"
android:layout_height="75dp" />
<ImageView
android:id="@+id/contactemail"
android:layout_weight="1"
android:layout_width="wrap_content"
android:src="@drawable/mail"
android:layout_margin="10dp"
android:background="@drawable/contact_icon_round"
android:layout_height="75dp" />
<ImageView
android:id="@+id/contactlocation"
android:layout_weight="1"
android:layout_width="wrap_content"
android:src="@drawable/location"
android:layout_margin="10dp"
android:background="@drawable/contact_icon_round"
android:layout_height="75dp" />
android:layout_gravity="fill_vertical" />
</LinearLayout>
圆形可绘制对象:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<solid android:color="@color/white"/>
<size android:width="5dp" android:height="5dp"/>
</shape>
有问题但无法找出错误?
谢谢!
只要您的图像源是正方形,您就可以将所有 Image
的 android:layout_height
属性更改为 wrap_content
。
这样您仍然可以使用 weight
行为。
否则你必须使用固定且相等的宽度和高度并删除重量属性...
利用这个布局,
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="15dp"
android:orientation="horizontal"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="75dp"
>
<ImageView
android:id="@+id/contactphone"
android:layout_width="75dp"
android:src="@drawable/phonecall"
android:layout_margin="10dp"
android:background="@drawable/contact_icon_round"
android:layout_height="75dp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="75dp"
>
<ImageView
android:id="@+id/contactemail"
android:layout_width="75dp"
android:src="@drawable/mail"
android:layout_margin="10dp"
android:background="@drawable/contact_icon_round"
android:layout_height="75dp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="75dp"
>
<ImageView
android:id="@+id/contactlocation"
android:layout_width="75dp"
android:src="@drawable/location"
android:layout_margin="10dp"
android:background="@drawable/contact_icon_round"
android:layout_height="75dp" />
</LinearLayout>
</LinearLayout>
由于宽度和高度不均匀,背景显示为椭圆形。
希望对您有所帮助。
在圆形 imageView 后面绘制带有 2 像素黑色边框的圆形黄色背景 无 XML:
GradientDrawable gd = new GradientDrawable();
gd.setColor(Color.YELLOW); // (no gradient)
gd.setStroke(2, Color.BLACK);
gd.setShape(GradientDrawable.OVAL);
gd.setGradientType(GradientDrawable.RADIAL_GRADIENT);
gd.setGradientRadius(iv.getWidth()/2);
iv.setBackground(gd);