следующие предложения в некоторых других должностей, я реализовал круговой кнопки, которые будут использоваться в приложении:Android - как определить конфигурируемый Форма Размер
Это осуществляется с помощью селектора XML:
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Non focused states
-->
<item android:state_focused="false" android:state_selected="false" android:state_pressed="false"
android:drawable="@drawable/big_ring_button_unfocused" />
<item android:state_focused="false" android:state_selected="true" android:state_pressed="false"
android:drawable="@drawable/big_ring_button_unfocused" />
<!-- Focused states
-->
<item android:state_focused="true" android:state_selected="false" android:state_pressed="false"
android:drawable="@drawable/big_ring_button_focused" />
<item android:state_focused="true" android:state_selected="true" android:state_pressed="false"
android:drawable="@drawable/big_ring_button_focused" />
<!-- Pressed
-->
<item android:state_pressed="true" android:drawable="@drawable/big_ring_button_pressed" />
</selector>
содержимое ..._ сфокусировано файла (другие просто изменить цвета):
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:innerRadius="@dimen/big_ring_button_inner_radius"
android:thickness="@dimen/big_ring_button_thickness"
android:useLevel="false">
<solid android:color="@color/white" />
</shape>
Я хотел бы использовать этот шаблон для всех закругленных кнопок в моем приложении, но так как текст внутри кнопок меняется, размер кнопки сам по себе должен измениться.
Я думал, что смогу выполнить это программно, поэтому я проверил документацию GradientDrawable - там нет способа изменить атрибут innerRadius
.
В настоящее время у меня есть 4 файла XML на каждую круглую кнопку (селектор, не сфокусированный, сфокусированный и нажатый), что крайне уродливо и станет болью в области шеи для поддержания.
Как я могу сделать эту кнопку настраиваемой по размеру (либо XML, либо программно)?
Благодаря
Предположим, вы можете установить текст в TextView с правильным масштабированием размера, затем получить размеры, удвоить размер радиуса и использовать его? –
@ user3427079, «double size for the radius» - как это сделать, не создавая дополнительные xml для этой конкретной кнопки? – Vasiliy
textView.getWidth() * 2, что-то вроде того, что я представляю –