如何根据按下的按钮更改编辑文本框的实际大小?

时间:2016-02-27 16:24:31

标签: android button android-edittext android-linearlayout customization

我正在尝试为木牌制作定制应用。当用户点击10 x10尺寸标志上的说法时,我希望编辑文本框更改大小以演示他们已完成的操作。这可以在android studio上完成吗? 这是我的代码到目前为止,我认为我所做的是改变了文本的大小,但是当点击按钮时它崩溃了所以我不知道。 Java文件:

public class Letters extends AppCompatActivity {
    int txtSize = 14;
    EditText Wood;
    Button bSize, bSize1, bSize2, bSize3;

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

        Button bSize = (Button) findViewById(R.id.bSize);
        Button bSize1 = (Button) findViewById(R.id.bSize1);
        Button bSize2 = (Button) findViewById(R.id.bSize2);
        Button bSize3 = (Button) findViewById(R.id.bSize3);

        bSize.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if (Wood.getTextSize() == 15) {
                    txtSize--;
                    Wood.setTextSize(txtSize);
                } else {
                    txtSize += 0;
                    Wood.setTextSize(txtSize);
                }
            }
        });
        bSize1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if (Wood.getTextSize() == 16) {
                    txtSize--;
                    Wood.setTextSize(txtSize);
                } else {
                    txtSize += 0;
                    Wood.setTextSize(txtSize);
                }
            }
        });

        bSize2.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if (Wood.getTextSize() == 17) {
                    txtSize--;
                    Wood.setTextSize(txtSize);
                } else {
                    txtSize += 0;
                    Wood.setTextSize(txtSize);
                }
            }
        });


        bSize3.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if (Wood.getTextSize() == 18) {
                    txtSize--;
                    Wood.setTextSize(txtSize);
                } else {
                    txtSize += 0;
                    Wood.setTextSize(txtSize);
                }
            }
        });

    }
}

xml文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_height="match_parent"
    android:padding="60dp"
    android:layout_width="match_parent"
    android:weightSum="1">

    <Button
        android:id="@+id/bSize"
        android:text="15 x 10 cm "
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="bSize" />

    <Button
        android:id="@+id/bSize1"
        android:text="20 x 15 cm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="bSize1" />

    <Button
        android:id="@+id/bSize2"
        android:text="30 x 7 cm"
        android:layout_width="103dp"
        android:layout_height="61dp"
        android:onClick="bSize2" />

    <Button
        android:id="@+id/bSize3"
        android:text="30 x 20 cm"
        android:layout_width="0dp"
        android:layout_marginBottom="20dp"
        android:layout_height="160dp"
        android:onClick="bSize3"
        android:layout_gravity="center_vertical" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:id="@+id/Wood"
        android:textSize="40dp"
        android:layout_alignTop="@+id/button3"
        android:layout_centerHorizontal="true"
        android:background="#795548"
        android:hint="Choose Letters.."/>

</LinearLayout>

2 个答案:

答案 0 :(得分:1)

您的应用程序崩溃可能是因为 NullPointerException 。这是因为您尚未在onCreate方法中初始化Wood变量。

你应该做的是:

Wood = (EditText) findViewById(R.id.Wood);
Button bSize = (Button) findViewById(R.id.bSize);
Button bSize1 = (Button) findViewById(R.id.bSize1);
Button bSize2 = (Button) findViewById(R.id.bSize2);
Button bSize3 = (Button) findViewById(R.id.bSize3);

当您的应用崩溃时,Android Studio中会出现 logcat 错误堆栈跟踪。 stacktrace显示导致崩溃的异常。您可以通过查看logcat日志轻松解决问题。

答案 1 :(得分:0)

您从未初始化导致EditText

NullPointerException

添加此

Wood = (EditText) findViewById(R.id.Wood);

onCreate方法内。

更新:这是您可以更改按钮上EditText的高度和宽度的方法。点击

final LayoutParams lparams = new LayoutParams(150,50); // First param is Width and second is height
Wood.setLayoutParams(lparams);