2016-01-29 4 views
2

Я создал следующий дизайн для кнопки enter image description hereИзменение стайлинга значения кнопки программно андроида

с помощью

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:right="245dp"> 
     <shape android:shape="rectangle" > 
      <corners android:radius="3dp" /> 
      <solid android:color="#000" /> 
     </shape> 
    </item> 

    <item android:left="0dp"> 
     <shape android:shape="rectangle" > 
      <corners android:radius="3dp" /> 
      <solid android:color="#80000000" /> 
     </shape> 
    </item> 
</layer-list>` 

То, что я хочу достичь, это: enter image description here

Знак + предполагается для изменения в тике, подписанном после того, как завершен фрагмент, который будет открыт (адрес). Как уменьшить прозрачность черного прямоугольника? Я до сих пор не понял, как сделать знак +, поэтому любые идеи приветствуются.

И главный вопрос: как я могу установить эти значения стиля, используя код в android? Я хочу изменить размер первого элемента (245dp) на 5% от ширины кнопки.

расположение моей кнопки:

<Button 
     android:id="@+id/button8" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_marginTopPercent="7%" 
     app:layout_marginBottomPercent="6%" 
     android:layout_centerHorizontal="true" 
     android:layout_alignParentBottom="true" 
     app:layout_widthPercent="50%" 
     android:layout_below="@id/button7" 
     android:background="@drawable/btnstyle" 
     android:text="Create" 
     android:textColor="#fff" /> 

и btnstyle определено выше.

+1

Вы можете сослаться на это, http://stackoverflow.com/questions/2016249/how-to-programmatically-setting-style-attribute-in-a-view –

ответ

3

Предполагая, что фон background.xml размещен в папке drawables. Вы можете использовать this-

<LinearLayout android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="100dp" 
       android:background="@drawable/background" 
       android:orientation="horizontal"> 
    <ToggleButton 
     style="?android:attr/borderlessButtonStyle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="10dp" 
     android:layout_marginLeft="20dp" 
     android:layout_marginStart="20dp" 
     android:layout_marginTop="10dp" 
     android:checked="false" 
     android:drawablePadding="80dp" 
     android:drawableRight="@drawable/button_image" 
     android:textColor="@android:color/white" 
     android:textOff="Button1" 
     android:textOn="Button1"/> 

    </LinearLayout> 

Для вытяжке button_image.xml, вот код-

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="false" android:state_focused="true" android:drawable="@drawable/plus_img"/> 
    <item android:state_checked="false" android:state_focused="false" android:drawable="@drawable/plus_img"/> 
    <item android:state_checked="true" android:state_focused="true" android:drawable="@drawable/tick_img"/> 
    <item android:state_checked="true" android:state_focused="false" android:drawable="@drawable/tick_img"/> 
</selector> 

На clickListener вашего ToggleButton, вы можете открыть фрагмент и setChecked из ваш togglebutton to! toggleButton.isChecked(). В принципе, вот так: toggleButton.setChecked (! ToggleButton.isChecked());

Что касается непрозрачности В вашем XML, что вы написали, цвет первого элемента в прямоугольнике в формате #RGB. Он также может быть #ARGB где «A» для альфа. Поэтому, если вы установите A = 0, представление будет прозрачным и с A = f, представление будет непрозрачным.

+0

Прошу прощения за столь поздний ответ, но я просто попробовал ваш макет, и у меня есть некоторые вопросы. Я также обновил макет моей кнопки. Мой главный вопрос был о том маленьком прямоугольнике, который является частью кнопки, а не о ее непрозрачности. В основном я хочу, чтобы 5% ширины кнопки были цветом, а остальное - другим цветом. И значки внутри вашей кнопки переключения, как я могу изменить их размеры. Теперь, когда я думаю об этом, могу ли я просто сделать весь макет и сделать его интерактивным или это плохой подход? Я мог бы легко достичь этого взгляда в макете, используя проценты. –

+0

Использование макетов, безусловно, будет более гибким. Вы можете контролировать все в нем, от размеров до процента выделенного пространства. Таким образом, используя весовые коэффициенты, вы можете достичь отметки 5% :) Также, насколько размер кнопки, которую можно вытащить в переключателе, я не думаю, что вы сможете манипулировать ею вне определенного размера. Итак, если вы можете использовать макет. Кроме того, если вы хотите, чтобы ваш макет имел проверенные функциональные возможности, используйте это: http://developer.android.com/samples/CustomChoiceList/src/com.example.android.customchoicelist/CheckableLinearLayout.html. –

+0

Затем вы можете дать всем своим дочерним элементам duplicateparentstate = "true" и сделать их clickable = "false". –

Смежные вопросы