如何使单选按钮控制按钮

时间:2017-01-26 03:02:39

标签: android xml button radio-button

我正在创建一个应用程序,它需要两种类型的用户。 "观众"和#34;承包商"。我为每个选项制作了两个单选按钮。我想知道三件事: 选择单选按钮时如何激活按钮。如果没有选择单选按钮,如何取消激活按钮。最后,如何使两个单选按钮根据所选的选项将您发送到一个独特的活动。例如,我选择"承包商"然后按下按钮继续,它会将我发送到连接到该单选按钮的独特布局。

这是我的XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/b"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/gradient_background"
tools:context="com.devteam.abire.abire.b">

<android.support.v7.widget.CardView
    app:cardElevation="15dp"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:layout_width="300dp"
    android:layout_height="345dp">

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

<android.support.v7.widget.CardView
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    app:cardElevation="20dp"
    android:layout_width="320dp"
    android:layout_height="320dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <View
            android:background="#141526"
            android:layout_width="match_parent"
            android:layout_height="50dp"/>

        <ImageView
            android:id="@+id/abire_app_icon_v2"
            android:layout_marginTop="21dp"
            android:elevation="45dp"
            android:layout_centerHorizontal="true"
            android:background="@drawable/abire_logo_v1"
            android:layout_width="55dp"
            android:layout_height="55dp" />

        <TextView
            android:layout_marginStart="20dp"
            android:id="@+id/register_as_text"
            android:layout_marginTop="10dp"
            android:text="Register As A..."
            android:textColor="#141526"
            android:layout_below="@+id/abire_app_icon_v2"
            android:textSize="28sp"
            android:textAlignment="textStart"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <RadioButton
            android:layout_marginStart="20dp"
            android:textSize="22sp"
            android:textColor="#141526"
            android:id="@+id/viewer_radioBtn"
            android:text="Viewer"
            android:layout_marginTop="18dp"
            android:layout_below="@+id/register_as_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <RadioButton
            android:layout_marginStart="20dp"
            android:textSize="22sp"
            android:textColor="#141526"
            android:id="@+id/contractor_radioBtn"
            android:text="Contractor"
            android:layout_marginTop="18dp"
            android:layout_below="@+id/viewer_radioBtn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <Button

            android:id="@+id/continueBtn"
            android:textSize="18sp"
            android:text="CONTINUE"
            android:textColor="#fff"
            android:layout_marginTop="25dp"
            android:layout_centerHorizontal="true"
            android:layout_below="@+id/contractor_radioBtn"
            android:background="@drawable/ripple_maroon"
            android:layout_width="250dp"
            android:layout_height="38dp" />

    </RelativeLayout>

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


</RelativeLayout>

这是我的Java:

package com.devteam.abire.abire;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class b extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.b);
}
}

2 个答案:

答案 0 :(得分:0)

首先,如果您有多重按钮,最好使用radiogroup而不是单选按钮。

对于&#34; 如何在选择单选按钮时激活按钮。如果没有选择单选按钮,如何取消激活按钮。&#34;,为活动中的按钮和单选按钮创建参考。然后,如果选中第一个单选按钮,则禁用按钮:

${@:2:1}

对于&#34; 最后,如何使两个单选按钮根据所选的选项将您发送到一个独特的活动。&#34;,同时使用radiogroup:

button.setEnabled(false); 

} });

答案 1 :(得分:0)

如果你想一次只能点击其中一个按钮,你应该将radiobuttons放在radiogroup内

<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
        <RadioButton
            android:layout_marginStart="20dp"
            android:textSize="22sp"
            android:textColor="#141526"
            android:id="@+id/viewer_radioBtn"
            android:onCLick="onRadioButtonClicked"
            android:text="Viewer"
            android:layout_marginTop="18dp"
            android:layout_below="@+id/register_as_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <RadioButton
            android:layout_marginStart="20dp"
            android:textSize="22sp"
            android:textColor="#141526"
            android:id="@+id/contractor_radioBtn"
            android:onCLick="onRadioButtonClicked"
            android:text="Contractor"
            android:layout_marginTop="18dp"
            android:layout_below="@+id/viewer_radioBtn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
</RadioGroup>

<Button
            android:id="@+id/continueBtn"
            android:textSize="18sp"
            android:text="CONTINUE"
            android:textColor="#fff"
            android:layout_marginTop="25dp"
            android:layout_centerHorizontal="true"
            android:layout_below="@+id/contractor_radioBtn"
            android:onCLick="onButtonClicked"
            android:background="@drawable/ripple_maroon"
            android:layout_width="250dp"
            android:layout_height="38dp" />

    package com.devteam.abire.abire;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;

    public class b extends AppCompatActivity {

    private String mClickedRadioButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.b);
    }

    public void onRadioButtonClicked(View view) {
        // Is the button now checked?
            boolean checked = ((RadioButton) view).isChecked();

        // Check which radio button was clicked
        switch(view.getId()) {
            case R.id.viewer_radioBtn":
                    if (checked)
                        sClickedRadioButton = "viewer";
                    break;
                case R.id.contractor_radioBtn"
                    if (checked)
                        sClickedRadioButton; = "contractor";    
                break;
            }
    }   

    public void onButtonClicked(View v){

        if(sClickedRadioButton == null){
            return;
        }else if(sClickedRadioButton.equals("viewer")){
            //Do something when view is checked
        }else if(sClickedRadioButton.equals("contractor"){
            // Do something when contractor is checked
        }   
}