简体   繁体   English

Android:环形内的圆形图像

[英]Android: Round Image inside ring shape

I want to create a button with image inside it as shown at the bottom of this pic https://trianglewiki.org/RGreenway_App/_files/android.jpg/_info/ . 我想创建一个按钮,其中包含图像,如该图片底部https://trianglewiki.org/RGreenway_App/_files/android.jpg/_info/所示 I am trying using layer-list and shape drawables and able to create buttons very similar. 我正在尝试使用图层列表和形状可绘制对象,并能够创建非常相似的按钮。 My problem is that my image is not scaling inside the button as I would like. 我的问题是我的图像没有按我的意愿缩放。 The ring shape is coming on the top of the image but image is not inside it. 环形形状出现在图像的顶部,但图像不在其中。

I want the image to be completely inside the ring. 我希望图像完全位于环内。 I think there is something wrong with the parameters values I am giving. 我认为我提供的参数值有问题。 But it could be I am not doing it the proper way. 但这可能是我没有采取正确的方法。

Can somebody check my xml files and see what is the problem or provide me with any information how to do it so that I get the same effect in the button as in the link above. 有人可以检查我的xml文件并查看是什么问题,或者向我提供任何有关如何执行此操作的信息,以便我可以在按钮中获得与上面的链接相同的效果。 Thanks 谢谢

custom_button.xml (in res/drawable) custom_button.xml(在res / drawable中)

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/map"/>

<item>
    <shape
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:innerRadius="20dp"
        android:innerRadiusRatio="1.75"
        android:shape="ring"
        android:thicknessRatio="25"
        android:useLevel="false" 
        >
        <gradient
            android:angle="90"
            android:endColor="#FFFFFF"
            android:startColor="#FFFFFF" />

        <size
            android:width="50dp" 
            android:height="40dp" />

        <solid android:color="#008000" />
    </shape>
</item>

</layer-list>

custom_layout (in res/drawable for linearlayout's background) custom_layout(以res / drawable表示linearlayout的背景)

<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
    android:angle="90"
    android:startColor="#FF000000"
    android:endColor="#FFFFFFFF"
    android:type= "linear" />   
<stroke
    android:width="1dp"
    android:color="#FF000000" />
<padding
    android:left="5dp"
    android:right="5dp"
    />
<size
    android:height="50dp"
    />
<solid
    android:color="#00FF00"
    />

</shape>   

header.xml (in res/layout) header.xml(在res / layout中)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/buttonBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@drawable/custom_layout"
android:orientation="horizontal" >

<ImageButton
    android:id="@+id/home"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="center_vertical"
    android:layout_weight="1"
    android:contentDescription="Button"
    android:paddingLeft="2dip"
    android:paddingRight="2dip"
    android:background="@drawable/custom_button"
    android:scaleType="fitXY"
    android:color="#ff0000"
     />

<ImageButton
    android:id="@+id/map"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="center_vertical"
    android:layout_weight="1"
    android:background="@drawable/custom_button"
    android:contentDescription="Map"
    android:paddingLeft="2dip"
    android:paddingRight="2dip"
    android:scaleType="fitXY"
     />

<ImageButton
    android:id="@+id/weather"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="center_vertical"
    android:layout_weight="1"
    android:background="@drawable/custom_button"
    android:contentDescription="Weather"
    android:paddingLeft="2dip"
    android:paddingRight="2dip"
    android:scaleType="fitXY"
    />

<ImageButton
    android:id="@+id/citilink"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="center_vertical"
    android:layout_weight="1"
    android:background="@drawable/custom_button"
    android:contentDescription="CitiLink"
    android:paddingLeft="2dip"
    android:paddingRight="2dip"
    android:scaleType="fitXY"
    />

</LinearLayout>

You are overcomplicating this is if I understand your question. 如果我理解您的问题,那么您会使这个问题复杂化了。 Look to here for an answer. 这里找到答案。 It's the trick I have used in the past. 这是我过去使用的技巧。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM