在方向更改时隐藏linearLayout

时间:2013-09-13 20:09:14

标签: android android-layout

我正在开发这个在webview中检索网页的Android应用程序,我在屏幕顶部有这个横幅。它在纵向布局中并不明显,但在横向上,它几乎占据了屏幕的上半部分。

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

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/header"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#EAC117"
        android:textSize="35sp" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@raw/firstintentlogo"
        android:layout_weight="1" android:contentDescription="@string/headLogoName"/>



 </LinearLayout> 

我不知道如何在java文件中说“当手机处于横向模式时,隐藏此linearLayout。”

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

在您的活动覆盖onConfigurationChanged

@Override
public void onConfigurationChanged(Configuration newConfig)
{
    if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
    {
        //TODO
    }
    super.onConfigurationChanged(newConfig);
}

答案 1 :(得分:2)

如果您自己处理更改,可以将其添加到onConfigurationChanged()以将Layout的{​​{1}}设置为visibility

如果您让操作系统处理配置更改,那么您可以创建以根据方向分隔gone。您将layouts用于纵向放在layout文件夹中,然后创建另一个名为layout的文件夹,以便操作系统知道在设备处于横向状态时使用该文件夹中的layout-land layout

Using configuration qualifiers

在大多数情况下,文档不推荐

Handling config changes maunally

Allowing system to handle config changes

答案 2 :(得分:1)

试试这个

@Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        //check config
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
    linearLayout.setVisibility(View.GONE); //set visibility of linearLayout as Gone
    Toast.makeText(this, "mode landscape", Toast.LENGTH_SHORT).show();
    }

    }

希望这有效