在另一个按钮上添加切换按钮

时间:2017-02-20 10:27:53

标签: android xml android-togglebutton

我正在使用Android应用程序,我必须在Toggle Button上实现自定义Button,如果用户点击Button而不是切换按钮,则分别打开/关闭。 查看图片以供参考: enter image description here

这是按钮代码:

<Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/textview"
            android:textColor="@color/colorAccent"
            android:background="@color/textViewBackground"
            android:drawablePadding="@dimen/drawable_padding"
           >

        </Button>

编辑:

完整视图:

 <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clickable="true"
        app:cardBackgroundColor="@color/cardview_dark_background"
        android:layout_marginTop="@dimen/cardView_top_margin"
        android:layout_marginBottom="@dimen/cardView_bottom_margin"
        android:id="@+id/cardView9"
        >

        <Button
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:textStyle="bold"
                    android:text="@string/textview"
                    android:textColor="@color/colorAccent"
                    android:background="@color/textViewBackground"
                    android:layout_below="@+id/cardView8"
                    android:gravity="start|center"
                    android:paddingRight="@dimen/inner_margin"
                    android:paddingLeft="@dimen/inner_margin"
                    android:drawablePadding="@dimen/drawable_padding"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:id="@+id/textView4"
                    android:drawableStart="@drawable/icon"
                    android:drawableLeft="@drawable/icon">
        </Button>

    </android.support.v7.widget.CardView>

4 个答案:

答案 0 :(得分:0)

试试这个:

<ToggleButton
    android:id="@+id/toggleButton1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:background="@drawable/toggle_selector"
    android:checked="false"
    android:text=""
    android:textOff=""
    android:textOn="" />

toggle_selector.xml

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

   <item
android:drawable="@drawable/toggle_off"
android:state_checked="false"/>
</selector>

代码:

 toggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
                text.setText("Status: " + isChecked);
            }
        });

enter image description here

答案 1 :(得分:0)

使用Button drawable创建可点击的视图作为包含ImageView和TextView的背景。

<RelativeLayout
    android:clickable="true"
    android:background="@android:drawable/btn_default"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <ToggleButton
        android:id="@+id/toggBtn"
        android:layout_below="@+id/text6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:gravity="right"
         /> 
    <TextView
        android:id="@+id/text"
        android:text="Sample text"
        android:textAppearance="?android:attr/textAppearanceButton"
        android:layout_toRightOf="@id/image"
        android:gravity="left"
        android:layout_centerVertical="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"></TextView>
</RelativeLayout>

答案 2 :(得分:0)

您可以使用merge布局来实现此目标

请参阅此gist

答案 3 :(得分:0)

我通过添加带重量的垂直布局解决了我的问题

app.controller('myCtrl', function($scope) {
    $scope.openlogsEservModal = function(param1,param2,param3,param4)
    {
     var customer = angular.element('#4c609cf1bbb6c5080865df9cfc1fb649_mylogs_details_customer').val();
        if (customer == '') {
            // return false / Do nothing;
        }
        else
        {
         // write your logic here
        }
    }
});