gpt4 book ai didi

android - 方向改变时布局发生巨大变化

转载 作者:行者123 更新时间:2023-11-29 15:25:55 24 4
gpt4 key购买 nike

我已经为一个 Activity 创建了一个布局。布局包含一些图像按钮和 TextView 。问题是,当我将设备的方向设置为纵向时,它工作正常,但是当我将方向更改为横向时,布局会产生意想不到的结果。

这是我的布局文件:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
android:padding="50dp" >


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content" >

<ImageView
android:id="@+id/settings_imageView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:src="@android:drawable/bottom_bar" />

<TextView
android:id="@+id/settings_textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="16dp"
android:text="@string/my_settings"
android:textAppearance="?android:attr/textAppearanceMedium" />

<ImageView
android:id="@+id/myProgramming_imageView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/settings_imageView"
android:layout_alignParentLeft="true"
android:src="@android:drawable/bottom_bar" />

<TextView
android:id="@+id/myProgramming_textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/myProgramming_imageView"
android:layout_centerHorizontal="true"
android:layout_marginBottom="14dp"
android:text="@string/my_programming"
android:textAppearance="?android:attr/textAppearanceMedium" />

<ImageView
android:id="@+id/library_imageView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/myProgramming_imageView"
android:layout_alignParentLeft="true"
android:src="@android:drawable/bottom_bar" />

<TextView
android:id="@+id/library_textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/library_imageView"
android:layout_centerHorizontal="true"
android:layout_marginBottom="16dp"
android:text="@string/library"
android:textAppearance="?android:attr/textAppearanceMedium" />

</RelativeLayout>
</ScrollView>

这是设备上纵向模式的输出,这是纵向和横向模式下的预期输出:

Portrait mode

这是风景设备上的模式的输出,这是意外的:

Landscape mode

我希望布局在纵向和横向模式下看起来相似。

最佳答案

首先你必须为不同的布局创建以下文件夹.....

Folder Name                       

layout-ldpi
layout-land-ldpi

layout-mdpi
layout-land-mdpi

layout-hdpi
layout-land-hdpi

layout-xlarge
layout-xlarge-land

1...AndroidManifest.xml 中的更改

android:configChanges="orientation|keyboardHidden"

2....在布局文件夹中创建layout_land.xml。

3....在layout-land文件夹中创建layout_port.xml。

4...创建以下方法

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


if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
{
setContentView(R.layout.layout_land);
set_all_id();
}
else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT)
{
setContentView(R.layout.layout_port);
set_all_id();
}
}

5....OnCreate方法的改变(仅此内容)

@Override
public void onCreate(Bundle savedInstanceState)
{

super.onCreate(savedInstanceState);
if (getResources().getConfiguration().orientation == 1)
{
setContentView(R.layout.layout_port);
}
if (getResources().getConfiguration().orientation == 2)
{
setContentView(R.layout.layout_land);
}
set_all_id();

}

6...创建用于 View 对象初始化的set_all_id()方法

public void set_all_id()
{
//define id for all view objects..
//textview = (textview)findViewById(R.id.textview);
}

关于android - 方向改变时布局发生巨大变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13189869/

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