1

我有以下代码,但它将按钮文本更改为空。当按钮单击用户在我拥有的编辑文本字段中键入的任何内容时,我基本上是在尝试更改按钮的文本。一切似乎都有效,但是,当我单击任一按钮时,我将按钮的文本更改为空/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);
            }
        });
    }

    }
4

1 回答 1

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>
于 2018-05-23T13:57:04.003 回答