【问题标题】:How to force android:shape="oval" to remain perfect circle?如何强制 android:shape="oval" 保持完美的圆形?
【发布时间】:2017-01-26 19:03:08
【问题描述】:

我正在尝试定义一个圆形背景以用作按钮的背景。

<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:insetLeft="@dimen/abc_button_inset_horizontal_material"
    android:insetTop="@dimen/abc_button_inset_vertical_material"
    android:insetRight="@dimen/abc_button_inset_horizontal_material"
    android:insetBottom="@dimen/abc_button_inset_vertical_material">
    <shape android:shape="oval">
    <solid android:color="@color/material_orange_200" />
    <padding android:left="@dimen/abc_button_padding_horizontal_material"
             android:top="@dimen/abc_button_padding_vertical_material"
             android:right="@dimen/abc_button_padding_horizontal_material"
             android:bottom="@dimen/abc_button_padding_vertical_material" />
</shape>
</inset>    

问题在于,如果按钮不是完全方形的,则形状会被拉伸成椭圆形(椭圆形),这是不可取的。我可以使用&lt;size&gt; 标签并将宽度和高度设置为相同的任意值。但这会破坏使用此背景作为不同大小按钮的通用背景的目的。

有没有办法强制(在 xml 中)椭圆形保持圆形?

【问题讨论】:

  • 你不需要为椭圆形使用环检查here
  • 嘿,你必须让你的按钮具有相同的宽度和高度,否则你的drawable会像你上面所说的那样拉伸成椭圆形。如果您不想制作这个椭圆,在这种情况下,您的可绘制尺寸会增加并且会覆盖很多空间以使其成为完美的圆形。您能告诉我您在按钮上显示的内容吗?
  • 也许这个SO question-and-answers会有所帮助
  • 您必须确保视图具有相同的高度和宽度。而已。故事结局。顺便说一句,@dimen/abc_button_inset_horizontal 是 4dp,...vertical 是 6dp。可能会帮助您进行计算。

标签: android android-layout android-shape


【解决方案1】:

像这样创建一个可绘制文件

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">

    <solid android:color="#22C2FE" />
    <stroke
        android:width="0dp"
        android:color="#2B8DC6"></stroke>
</shape>

并使用与使用drawable的视图相同的高度和宽度。

【讨论】:

  • 没有。不好。如果我在图像不是完美正方形的地方使用 ImageButton 怎么办。实际上,您的提议只是将固定的高度和宽度委托给 View。
  • @user6694745 如果您的视图不是完美的正方形,请尝试使用一些填充
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
  • 1970-01-01
  • 2016-09-25
相关资源
最近更新 更多