我以纵向模式制作了一个像这样的屏幕:
工具栏内的三个图像下面 但我想在横向模式下看起来像这样:
但是我无法移动工具栏右侧的屏幕。
下面是我的toolbar.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_bottom"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="#ffffff"
android:minHeight="?attr/actionBarSize"
android:layout_alignParentRight="true">
<LinearLayout
android:id="@+id/toolbarmenucontainer"
android:layout_width="match_parent"
android:weightSum="3"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageButton
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="@drawable/ic_location"
android:clickable="true"
android:scaleType="fitXY"
android:layout_weight="1"
/>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="@drawable/ic_setting"
android:clickable="true"
android:scaleType="fitXY"
android:layout_weight="1"
/>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="@drawable/ic_people"
android:clickable="true"
android:scaleType="fitXY"
android:layout_weight="1"
/>
</LinearLayout>
</android.support.v7.widget.Toolbar>
</RelativeLayout>
还有一件事如何制作可折叠的谷歌地图,如图所示。点击红色条带,它从下到上,从上到下展开。任何帮助都将在先进的过程中受到赞赏。
答案 0 :(得分:0)
一种简单的方法是使用两个布局xml文件:一个在屏幕处于纵向模式时使用,另一个在屏幕处于横向模式时使用。
选项1:然后您可以将它们放在相应的资源文件夹中:
/layout-land
用于lansdcape one /layout-port
为肖像Activity
onCreate()
,因为Activity
实际上已重新创建。选项2:或者,您也可以通过编程方式检测和处理方向:
警告:除非您有理由不使用选项1中所述的Android内置方向处理系统,否则不应首选此选项。例如,如果您需要{{ 1}}不要重新创建。
Activity
中,在Manifest
添加configChange
检测器:
Activity
<activity android:name=".YourActivity" android:configChanges="orientation" />
中,捕获配置更改以使用正确的布局XML文件:
Activity
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// set the Layout file to use using newConfig.orientation. For example:
final boolean isLandscape = (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE);
setContentView(isLandscape ? R.layout.toolbar_horizontal : R.layout.toolbar_vertical);
doAnyOtherNeededStuffAccordingToTheScreenOrientation(isLandscape);
}
不会重新创建,因此在更改方向时不会调用Activity
。通过捕获/处理onCreate()
事件来阻止这种情况。答案 1 :(得分:0)
您可以使用以下名称定义备用布局资源文件: 的 RES /布局陆强> 添加您的布局xml文件与右侧的工具栏。当屏幕方向改变时,系统将从该目录设置活动的内容视图。
答案 2 :(得分:-1)
为AndroidManifest文件中的活动添加 android:screenOrientation =“sensorLandscape”
<activity
android:name=".MainActivity"
android:label="Sample"
android:screenOrientation="sensorLandscape"
android:theme="@style/AppTheme"/>
你可以像这样以编程方式更改它
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);