onClickListener,用于根据编辑文本更改按钮文本

时间:2018-05-18 22:52:54

标签: java android android-studio android-debugging

我有以下代码,但它将按钮文本更改为空。我基本上试图更改按钮的文本,当它点击任何用户键入我编辑的文本字段。一切似乎都有效,但是,当我点击任一按钮时,我将按钮的文本更改为空/ null,因为我使用了包装内容,它也缩小了按钮的大小。

activity_main.xml中          

    <LinearLayout
        android:layout_width="368dp"
        android:layout_height="495dp"
        android:orientation="vertical"
        tools:layout_editor_absoluteX="8dp"
        tools:layout_editor_absoluteY="8dp">

    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#0000ff"
            android:gravity="center"
            android:padding="10dp"
            android:text="Name: Balkar Rana"
            android:layout_marginLeft="30dp"
            android:layout_marginTop="30dp"
            android:textColor="#FFFF00"
            android:textSize="20dp"
            android:textStyle="bold"
            />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="25dp"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:textColor="#FF69B4"
            android:text="Username: "
            android:textSize="20dp"/>

        <EditText
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:gravity="left"
            android:textColor="#000000"
            android:textSize="20dp"
            android:id="@+id/username"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="25dp"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:textColor="#63ea1f"
            android:text="Password: "
            android:textSize="20dp"/>

        <EditText
            android:inputType="textPassword"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:gravity="left"
            android:textColor="#000000"
            android:textSize="20dp"
            android:id="@+id/password"/>


    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_marginTop="25dp">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:text="Username"
            android:textSize="20dp"
            android:textStyle="bold"
            android:textColor="#FF69B4"
            android:id="@+id/userButton"
            android:onClick="onClick"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:layout_marginTop="10dp"
            android:text="Password"
            android:textSize="20dp"
            android:textStyle="bold"
            android:textColor="#63ea1f"
            android:id="@+id/passButton"
            android:onClick="onClick"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:layout_marginTop="10dp"
            android:text="USER-PASS"
            android:textSize="20dp"
            android:textStyle="bold"
            android:textColor="#FF69B4"
            android:id="@+id/userPassButton"
            android:onClick="onClick"/>

    </LinearLayout>


    </LinearLayout>

</android.support.constraint.ConstraintLayout>

MainActivity.java

    package com.example.balkarrana.lab2;

    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;

    public class MainActivity extends AppCompatActivity{

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

        EditText usernameInput = (EditText)findViewById(R.id.username);
        final String userText = usernameInput.getText().toString();
        final Button userButtonVariable = (Button)findViewById(R.id.userButton);

        EditText passwordInput = (EditText)findViewById(R.id.username);
        final String passText = passwordInput.getText().toString();
        final Button passButtonVariable = (Button)findViewById(R.id.passButton);

        final String userPassText = userText + passText;
        final Button userPassButtonVariable = (Button)findViewById(R.id.userPassButton);

        userButtonVariable.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                userButtonVariable.setText(userText);
            }
        });

        passButtonVariable.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                passButtonVariable.setText(passText);
            }
        });

        userPassButtonVariable.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                userPassButtonVariable.setText(userPassText);
            }
        });
    }

    }

1 个答案:

答案 0 :(得分:0)

首次启动应用时,您将在onCreate中获取EditText的值,它们将为空白。您需要获取onClick中的当前值,然后进行设置。这是我为userButton做的。

...
public class MainActivity extends AppCompatActivity{

EditText usernameInput;
Button userButtonVariable;

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

        usernameInput = (EditText)findViewById(R.id.username);
        userButtonVariable = (Button)findViewById(R.id.userButton);

        userButtonVariable.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                String userText = usernameInput.getText().toString();
                userButtonVariable.setText(userText);
    }
});

要停止按钮更改大小,请不要将宽度设置为wrap_content。

尝试使用match_parent,然后使用边距。

<Button
       android:layout_width="match_parent"
...
</Button>