在横屏模式下隐藏一个字段

4
有没有方法在横屏模式下隐藏一个字段? 基本上,我想要:
android:visibility="GONE"

只在横屏模式下显示。这可能吗?有一个简单的解决方案吗...

我尝试过以下方法:

 public override void OnConfigurationChanged(Android.Content.Res.Configuration newConfig)
    {
        base.OnConfigurationChanged(newConfig);
        if(newConfig.Orientation == Android.Content.Res.Orientation.Landscape)
        {
// 1
        }
        else
        {
  // 2
        }

    } 

但是它不起作用。
2个回答

6
尝试类似以下内容:
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
  View my_view = findViewById(R.id.your_view);
  my_view.setVisibility(View.GONE);
}

我会在你的Activity的onCreate()方法中这样做。 - nKn
明白了!在我的情况下,我正在使用CSharp编程,我会看看我能做什么。谢谢。 - GtOkAi
很好的回答。我不认为这是必要的,但您认为如果我们旋转回纵向,再次将其设置为可见是否会是一个很好的额外安全措施? - Alex
@RhinoFeeder 在Java的情况下,这并不是必要的(尽管可能只是为了安全起见),因为每次运行时配置更改发生时,都会调用onCreate()(如果您没有强制不这样做)。我不知道C#的情况,所以在那种情况下,我会遵循@elenasys的答案。而且@user2191766,一旦您的问题得到解决,无论是出于反馈还是声誉目的,都不要忘记接受帮助您最多的答案,以便其他用户也可以找到它有用。 - nKn

2

好的,我看到您正在使用C#的Xamarin,请尽量具体地提出您的问题,这样我们才能帮助您=)。

下面是如何隐藏和显示按钮的示例:

// get the initial orientation
var surfaceOrientation = WindowManager.DefaultDisplay.Rotation;

if (surfaceOrientation == SurfaceOrientation.Rotation0 || surfaceOrientation == SurfaceOrientation.Rotation180) {
    button.Visibility=ViewStates.Invisible;  
 } else {
    button.Visibility=ViewStates.Visible;
 }

或者

public override void OnConfigurationChanged (Android.Content.Res.Configuration newConfig)
  {
    base.OnConfigurationChanged (newConfig);                            
    if (newConfig.Orientation == Android.Content.Res.Orientation.Landscape) {
      button.Visibility=ViewStates.Invisible;        //invisible in landscape.
    } else if (newConfig.Orientation == Android.Content.Res.Orientation.Portrait) {
      button.Visibility=ViewStates.Visible;         //viible in portrait.
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接