我的 Android 应用程序中的
ConstraintLayout
有两个按钮:startButton
和 stopButton
。两个按钮具有相同的约束,因此它们位于彼此的顶部。当活动开始时,我只希望开始按钮可见且可点击,而停止按钮应该不可见。
我目前正在使用以下代码来实现此目的:
startButton.setVisibility(View.VISIBLE);
stopButton.setVisibility(View.INVISIBLE);
我的问题是:
startButton.setEnabled(true);
stopButton.setEnabled(false);
isEnabled
,为什么需要设置?我想确保 startButton 可见且可点击,stopButton 在 Activity 启动时完全隐藏且不可点击。
布局 XML:
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/startButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Start"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<Button
android:id="@+id/stopButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Stop"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Java代码:
public class MainActivity extends AppCompatActivity {
private Button startButton;
private Button stopButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startButton = findViewById(R.id.startButton);
stopButton = findViewById(R.id.stopButton);
startButton.setVisibility(View.VISIBLE);
stopButton.setVisibility(View.INVISIBLE);
// Optional:
// startButton.setEnabled(true);
// stopButton.setEnabled(false);
}
}
初始状态:
startButton
应可见且可点击,stopButton
应不可见且不可点击。
我是否需要显式设置两个按钮的 isEnabled
属性,或者管理可见性(View.VISIBLE 和 View.INVISIBLE)足以满足我的要求吗?任何详细的解释或最佳实践将不胜感激。
除了设置
stopButton.setVisibility(View.INVISIBLE);
,您还可以设置 stopButton.setVisibility(View.GONE)
。
当设置 View.GONE
时,约束被放松并且元素“消失”。您可以在布局视图中检查这一点。更改时可以再次设置stopButton.setVisibility(View.VISIBLE)
。
另一种选择是仅使用一个按钮,而不是更改可见性,您还可以根据是否需要启动或停止来更改
onClick
参数以及 text
参数。