【问题标题】:Set visibility visible but set enable false Android XML Java设置可见性可见但设置启用 false Android XML Java
【发布时间】:2021-08-21 09:49:17
【问题描述】:

我有一个名为HideIt的按钮:

android:id="@+id/HideIt"
android:onClick="HideIt_onClick"

我还有一个名为HelloWorld的按钮:

 android:id="@+id/HelloWorld"
 android:onCick="HelloWorld_onClick"

还有名为VisibleIt的第三个按钮:

android:id="@+id/VisibleIt"
android:onCick="VisibleIt"

场景是什么?

首先我点击HideIt按钮,所以它的功能将不可见禁用HelloWorld按钮如下代码:

    public void HideIt_onClick(View v) {
    
Button DisableHide = findViewById(R.id.HelloWorld);
DisableHide.setVisibility(View.GONE);
DisableHide.setEnabled(false);}

然后我点击VisibleIt按钮,所以它的功能将可见 HelloWorld按钮但是它会 启用HelloWorld按钮,代码如下:

    public void VisibleIt_onClick(View v) {
        
Button VisibleHelloWorld = findViewById(R.id.HelloWorld);
VisibleHelloWorld.setVisibility(View.VISIBLE);}

有什么问题? 问题是当我点击VisibleIt 时,我希望我的HelloWorld 按钮设置为可见仍然禁用,但它不会从不 设置为可见并且它仍然隐藏

我在VisibleIt代码中添加了一行代码到文本如下:

DisableHide.setEnabled(true);}

所以VisibleIt代码如下:

    public void VisibleIt_onClick(View v) {
        
Button VisibleHelloWorld = findViewById(R.id.HelloWorld);
VisibleHelloWorld.setVisibility(View.VISIBLE);
DisableHide.setEnabled(true);}

在这种情况下,当我点击 VisibleIt 按钮时,它 Visible BUT NOT disabled我想要的,所以我在上面的VisbileIt 代码中设置了setEnable(false),但我遇到了和以前一样的问题,按钮HelloWorld 仍然隐藏

所以我尝试了private void 如下代码,但问题仍然存在:

public void VisibleIt_onClick(View v) {

Button VisibleHelloWorld = findViewById(R.id.HelloWorld);
VisibleHelloWorld.setVisibility(View.VISIBLE);
DisableHide.setEnabled(true);
DisableItNow();
}
    private void DisableItNow() {
    Button DisableItPlease = findViewById(R.id.HelloWorld);
    DisableItPlease.setEnabled(false);
    }

我需要那个 HelloWorld 按钮,它被 另一个 Java 函数 禁用消失,让 可见 strong> 此功能 仍然禁用

【问题讨论】:

  • 为什么你一直在寻找相同 id 的按钮?,你可以让它全局并访问它,也许这就是问题的原因。尝试在 onCreate 方法上初始化按钮并从 Activity / Fragment 中的任何位置访问它

标签: java android xml


【解决方案1】:

也许下面的代码可以帮助你。

public class MainActivity extends AppCompatActivity{

Button HideIt;
Button HelloWorld;
Button VisibleIt;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  
   HideIt = findViewById(R.id.HideIt);
   HelloWorld = findViewById(R.id.HelloWorld);
   VisibleIt = findViewById(R.id.VisibleIt);

   HideIt.setOnClickListener(v -> {
        HelloWorld.setVisibility(View.INVISIBLE);
        HelloWorld.setEnabled(false);
   });
   
   VisibleIt.setOnClickListener(v -> {
        HelloWorld.setVisibility(View.VISIBLE);
        HelloWorld.setEnabled(true);
   });

   //in xml code and in Your activity java file you can now safely delete the 
   //function that you created for 
   //hiding or showing
   
  } 


}

【讨论】:

    【解决方案2】:

    也许只需在onClick() 中使用 if 语句来检查可见性,如下所示:

    public void VisibleIt_onClick(View v) {
        //Button VisibleHelloWorld = findViewById(R.id.HelloWorld);
        //v is already your button
        if( v.getVisibility() == View.INVISIBLE)
            v.setVisibility(View.VISIBLE);
        else if(v.getVisibility() == View.VISIBLE)
            v.setVisibility(View.INVISIBLE)
        else{;/*the view is View.GONE*/}
    }
    

    这样,如果视图(您的按钮)可见,它会将可见性设置为View.INVISIBLE,如果对View.VISIBLE 不可见。
    对于您正在尝试做的事情,更改按钮 .setEnabled() 属性是没有意义的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 1970-01-01
      • 2017-08-25
      • 2011-06-26
      • 1970-01-01
      • 2011-09-02
      相关资源
      最近更新 更多