gpt4 book ai didi

java - android setVisible on textView 和 editText 不会立即生效

转载 作者:行者123 更新时间:2023-12-02 04:02:31 24 4
gpt4 key购买 nike

我有一个简单的布局,其中包括 2 个 TextView 和 2 个编辑文本,以及几个微调器。我的问题是,根据第一个微调器的值,我想显示或隐藏某些 View 或更改某些标签上的文本。我的实现工作正常,除了每当调用 setVisible(View.INVISIBLE) 时,edittext 和 textview 实际上不会消失,直到我单击屏幕上的其他内容。例如,一旦我单击未隐藏的编辑文本,我想要隐藏的 View 就会继续并消失。我已经尝试对它们调用 invalidate() 正如我在其他帖子中看到的那样来刷新 View ,但它不起作用。我在下面发布了 XML 布局和相关的 java 代码。感谢所有帮助。

XML 布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.greg.android.youcast.FieldDisplayActivity"
tools:showIn="@layout/activity_field_display">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="150dp">

<Spinner
android:id="@+id/run_or_play_spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"/>

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="150dp"
android:orientation="horizontal">

<TextView
android:id="@+id/passer_name_text_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.4"
android:text="@string/passer_name_label"/>

<EditText
android:id="@+id/passer_name_edit_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.6"
android:hint="@string/passer_name_edit_text"/>


</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="150dp"
android:orientation="horizontal">


<TextView
android:id="@+id/receiver_name_text_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.4"

android:text="@string/receiver_name_label"/>

<EditText
android:id="@+id/receiver_name_edit_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.6"
android:hint="@string/receiver_name_edit_text"/>

</LinearLayout>


<LinearLayout
android:layout_width="match_parent"
android:layout_height="150dp"
android:orientation="horizontal">

<TextView
android:id="@+id/yards_gained_text_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.4"
android:text="@string/yards_gained"/>

<Spinner
android:id="@+id/yards_spinner"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.6"/>

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="150dp">

<Button
android:id="@+id/submit_play_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/submit_play_button"/>
</LinearLayout>


</LinearLayout>

以及相关的java代码:

...
runOrPlaySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String choice = (String) parent.getItemAtPosition(position);
if (choice.equals("Run")) {
setRunPlayUIFields();
} else if (choice.equals("Pass")) {
setPassPlayUIFields();
}

}

@Override
public void onNothingSelected(AdapterView<?> parent) {}

});

....
private void setRunPlayUIFields() {
passerNameLabel.setText("Runner Name: ");
receiverNameField.setVisibility(View.INVISIBLE);
receiverNameLabel.setVisibility(View.INVISIBLE);
receiverNameField.refreshDrawableState();
passerNameField.setHint("Runner Name");
this.receiverNameField.invalidate();
this.receiverNameLabel.invalidate();
}

private void setPassPlayUIFields() {
passerNameLabel.setText(R.string.passer_name_label);
receiverNameLabel.setVisibility(View.VISIBLE);
receiverNameField.setVisibility(View.VISIBLE);
passerNameField.setHint("Passer Name");
this.receiverNameField.invalidate();
this.receiverNameLabel.invalidate();
}

最佳答案

在 XML 布局中,设置您的

android:id="@+id/receiver_name_text_view"具有以下属性android:visibility="visible"

您可以尝试这样做,或者如果您愿意,您可以尝试在 Java 代码中执行以下操作:

receiverNameField.setAlpha(0.0f); 使其不可见

receiverNameField.setAlpha(1.0f); 使其可见

关于java - android setVisible on textView 和 editText 不会立即生效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34747716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com