Android: круглое изображение внутри кольца

Я хочу создать кнопку с изображением внутри, как показано внизу этого рисунка https://trianglewiki.org/RGreenway_App/_files/android.jpg/_info/. Я пытаюсь использовать список слоев и рисунков формы и могу создавать очень похожие кнопки. Моя проблема в том, что мое изображение не масштабируется внутри кнопки, как хотелось бы. Форма кольца появляется в верхней части изображения, но изображение не находится внутри него.

Я хочу, чтобы изображение было полностью внутри кольца. Я думаю, что что-то не так со значениями параметров, которые я даю. Но может быть, я не делаю это должным образом.

Может ли кто-нибудь проверить мои файлы xml и посмотреть, в чем проблема, или предоставить мне любую информацию, как это сделать, чтобы я получил тот же эффект на кнопке, что и в ссылке выше. Спасибо

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 (в 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 (в разрешении/макете)

<?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>

person user2188951    schedule 06.04.2013    source источник


Ответы (1)


Вы слишком усложняете это, если я понимаю ваш вопрос. Найдите ответ здесь. Это трюк, который я использовал в прошлом.

person Sean    schedule 09.04.2013
comment
Спасибо за Ваш ответ! Я думаю ты прав! Я должен просто думать о чем-то более простом! - person user2188951; 10.04.2013