为什么我的 android studio EditText 视图不显示输入、输出或提示?
Why does my android studio EditText view not display input, output, or the hint?
我的 EditText 与我找到的视频和文章不一样。 EditText 不显示用户在输入时输入的内容,或者当我告诉输出显示在那里时,我分配给它的提示也没有显示。现在我将输出转到 TextView,但如果我能让 EditText 正常工作,可以大大减少代码行。我对此很陌生,很难理解。谢谢你的帮助。
这是 xml 文件:
//DOES NOT SHOW INPUT AT TIME OF INPUT, OR WHEN TOLD TOLD BY OUTPUT. HINT DOES NOT SHOW EITHER-------
<EditText
android:id="@+id/MetalCounter"
android:layout_width="40dp"
android:layout_height="20dp"
android:layout_margin="4dp"
android:ems="10"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="15sp"
android:hint="0"
android:textColorHint="#000000"
android:inputType="number"
app:layout_constraintRight_toLeftOf="@id/guideline"
app:layout_constraintTop_toBottomOf="@id/ResourceSubmitButton" />
//is put in top left corner for testing purposes---------------------------------
<TextView
android:id="@+id/MetalResult"
android:layout_width="40dp"
android:layout_height="20dp"
android:layout_margin="4dp"
android:text=""
android:textAlignment="center"
android:textColor="#000000"
android:textSize="15sp"
/>
这里是 java 文件:
package com.example.game;
import androidx.appcompat.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 {
// These are the global variables
EditText MetalCounter;
TextView MetalResult;
Button ResourceSubmitButton;
int Metal;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//to get from user input and into variable form
MetalCounter = (EditText) findViewById(R.id.MetalCounter);
MetalResult = (TextView) findViewById(R.id.MetalResult);
ResourceSubmitButton = (Button) findViewById(R.id.ResourceSubmitButton);
//Submit button
ResourceSubmitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//to receive and show the inputted values into the MetalResult TextView
MetalResult.setText(MetalCounter.getText().toString());
//This is a test to see if the result would show up but does not
Metal = Integer.parseInt(MetalCounter.getText().toString());
MetalCounter.setText(MetalCounter.getText().toString());
}
});
}
}
嗯,我觉得问题出在这部分
android:layout_width="40dp"
android:layout_height="20dp"
android:layout_margin="4dp"
android:ems="10"
android:textSize="15sp"
这些属性不是 well-defined,因为您已将 layout_margin
设置为 4dp,这会导致视图缩小。所以现在你的宽度不是 40dp,而是 32dps,同样你的高度只有 12dps,这非常小并且与所选 textSize
不匹配
所以,我的建议是将宽度和高度属性更改为 wrap_content,如下所示
android:layout_width="wrap_content"
android:layout_height="wrap_content"
您可以保持其他一切不变。
备注
- 考虑更改您的变量以遵循
camelCase
约定
// Before
EditText MetalCounter;
TextView MetalResult;
//After
EditText metalCounter;
TextView metalResult;
- 更改提示颜色的不透明度以将其与文本本身区分开来
- 如果您仍然遇到问题,那么可能是由于底部的限制。如果是这样,请 post 完整的布局文件。
我的 EditText 与我找到的视频和文章不一样。 EditText 不显示用户在输入时输入的内容,或者当我告诉输出显示在那里时,我分配给它的提示也没有显示。现在我将输出转到 TextView,但如果我能让 EditText 正常工作,可以大大减少代码行。我对此很陌生,很难理解。谢谢你的帮助。
这是 xml 文件:
//DOES NOT SHOW INPUT AT TIME OF INPUT, OR WHEN TOLD TOLD BY OUTPUT. HINT DOES NOT SHOW EITHER-------
<EditText
android:id="@+id/MetalCounter"
android:layout_width="40dp"
android:layout_height="20dp"
android:layout_margin="4dp"
android:ems="10"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="15sp"
android:hint="0"
android:textColorHint="#000000"
android:inputType="number"
app:layout_constraintRight_toLeftOf="@id/guideline"
app:layout_constraintTop_toBottomOf="@id/ResourceSubmitButton" />
//is put in top left corner for testing purposes---------------------------------
<TextView
android:id="@+id/MetalResult"
android:layout_width="40dp"
android:layout_height="20dp"
android:layout_margin="4dp"
android:text=""
android:textAlignment="center"
android:textColor="#000000"
android:textSize="15sp"
/>
这里是 java 文件:
package com.example.game;
import androidx.appcompat.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 {
// These are the global variables
EditText MetalCounter;
TextView MetalResult;
Button ResourceSubmitButton;
int Metal;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//to get from user input and into variable form
MetalCounter = (EditText) findViewById(R.id.MetalCounter);
MetalResult = (TextView) findViewById(R.id.MetalResult);
ResourceSubmitButton = (Button) findViewById(R.id.ResourceSubmitButton);
//Submit button
ResourceSubmitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//to receive and show the inputted values into the MetalResult TextView
MetalResult.setText(MetalCounter.getText().toString());
//This is a test to see if the result would show up but does not
Metal = Integer.parseInt(MetalCounter.getText().toString());
MetalCounter.setText(MetalCounter.getText().toString());
}
});
}
}
嗯,我觉得问题出在这部分
android:layout_width="40dp"
android:layout_height="20dp"
android:layout_margin="4dp"
android:ems="10"
android:textSize="15sp"
这些属性不是 well-defined,因为您已将 layout_margin
设置为 4dp,这会导致视图缩小。所以现在你的宽度不是 40dp,而是 32dps,同样你的高度只有 12dps,这非常小并且与所选 textSize
所以,我的建议是将宽度和高度属性更改为 wrap_content,如下所示
android:layout_width="wrap_content"
android:layout_height="wrap_content"
您可以保持其他一切不变。
备注
- 考虑更改您的变量以遵循
camelCase
约定
// Before
EditText MetalCounter;
TextView MetalResult;
//After
EditText metalCounter;
TextView metalResult;
- 更改提示颜色的不透明度以将其与文本本身区分开来
- 如果您仍然遇到问题,那么可能是由于底部的限制。如果是这样,请 post 完整的布局文件。