我为活动创建了一个布局。布局包含一些图像按钮和文本视图。问题在于,当我将设备的方向设置为纵向时,它的工作正常,但是当我将方向更改为横向时,布局会产生意外结果。
这是我的布局文件:
<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>
以下是设备上纵向模式的输出,这是纵向和横向模式下预期的输出:
以下是设备上格局 模式的输出,这是意外的:
我希望布局在纵向和横向模式下看起来很相似。
答案 0 :(得分:2)
首先你必须为不同的布局创建以下文件夹.....
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 ...创建用于初始化视图对象的set_all_id()方法
public void set_all_id()
{
//define id for all view objects..
//textview = (textview)findViewById(R.id.textview);
}
答案 1 :(得分:1)
由于landscape
模式下的高度较低,布局将显示如下。
据我所知,好的方法是在res文件夹中保持layout-land并设计横向模式的布局。这样看起来很漂亮
答案 2 :(得分:1)
- 您screen size
似乎在这里造成问题。
- 您必须在 res
目录下创建另一个文件夹layout-land
,并在其中创建一个.xml
文件就像你在layout
文件夹中所做的那样,并使它在landscape mode
中看起来像你想要的那样。
- 当您的应用进入landscape
模式时,自动将选择此.xml
文件(即从layout-land)文件夹
答案 3 :(得分:1)