我的应用程序的内容在横向模式下被切断

Content of my app cutting off in landscape mode

我是 android 开发的初学者。我制作了一个单屏应用程序,但应用程序的内容在横向模式下被切断。这是一个非常简单的应用程序,可以显示商店的详细信息。该应用程序在纵向模式下运行得非常好,但是当我将其切换到横向模式时,一些文本视图消失了。我不知道出了什么问题。 这是代码:

<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="match_parent"
tools:context=".MainActivity"
android:background="@color/black">
<TextView
    android:id="@+id/toptitle"
    android:text="Try Our Mouthwatering Pani-Puri"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingTop="30dp"
    android:paddingBottom="20dp"
    android:layout_centerHorizontal="true"
    android:textSize="25sp"
    android:fontFamily="cursive"
    android:textColor="@color/white"
    />
<ImageView
    android:id="@+id/image"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:scaleType="centerCrop"
    android:src="@drawable/panipuri"
    android:layout_below="@id/toptitle"/>
<TextView
    android:id="@+id/detail"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="@color/white"
    android:layout_below="@id/image"
    android:text="Details"
    android:layout_centerHorizontal="true"
    android:textSize="20dp"
    android:paddingTop="20dp"
    android:paddingLeft="20dp"
    android:paddingRight="20dp"

    />
<ImageView
    android:id="@+id/icon"
    android:layout_below="@id/detail"
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:layout_margin="35dp"
    android:src="@drawable/ocation"/>
<TextView
    android:id="@+id/location"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/icon"
    android:text="Nahar chowk, Sipahi tola, Near Durga Mandir,Purnia"
    android:layout_below="@id/detail"
    android:textColor="@color/white"
    android:paddingTop="35sp"
    android:textSize="15sp"
    android:paddingRight="15dp"
    android:fontFamily="monospace"/>
<ImageView
    android:id="@+id/watch"
    android:layout_below="@id/icon"
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:layout_marginLeft="35dp"
    android:layout_marginRight="35sp"
    android:src="@drawable/imgicon"/>
<TextView
    android:id="@+id/timing"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/watch"
    android:text="Operates between 9 AM to 11 PM"
    android:layout_below="@id/location"
    android:textColor="@color/white"
    android:paddingTop="35sp"
    android:paddingRight="15dp"
    android:textSize="15dp"
    android:fontFamily="monospace"/>
<ImageView
    android:id="@+id/description"
    android:layout_below="@id/timing"
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:layout_margin="35sp"
    android:src="@drawable/description"/>
<TextView
    android:id="@+id/des"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/description"
    android:layout_below="@id/timing"
    android:textSize="15sp"
    android:textColor="@color/white"
    android:paddingTop="35sp"
    android:fontFamily="monospace"
    android:text="Home Delivery available\nRs 10 for 8 pieces.\n"/>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Contact us:+91-6277665544 "
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:textColor="@color/white"
    android:textSize="16sp"
    android:layout_margin="10dp"
    android:background="@color/purple_500"/>
   </RelativeLayout>

portrait mode screenshot landscape mode screenshot

您是否尝试过将布局包装在 ScrollView 中?这可能会有所帮助。你在使用重量吗?喜欢

<ScrollView> *CONTENT* </ScrollView>

似乎 space 不足以容纳所有内容。您可能还想考虑为更适合的水平配置添加不同的布局文件

我建议您重新考虑 landscape 的更好布局。您肯定不想在这里使用 ScrollView 。例如:将 DetailsContact us 放在图像的右侧。将您想要的 portrait 布局放入 layout 文件夹,将 layout-land 放入 landscape .

欢迎您 Whosebug

为了更好的用户体验,您应该为横向创建一个单独的布局。 这很简单:

  • 创建一个与 layout 文件夹平行的文件夹,名称为 layout-land
  • 将布局文件(原始布局文件)复制到 layout-land 文件夹中。
  • 修改视图(即尺寸、位置等)以适应景观 模式

是这样的: res/layout-land/activity_main.xml

<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="match_parent"
    tools:context=".MainActivity"
    android:background="@color/black">
   <TextView
       android:id="@+id/toptitle"
       android:text="Try Our Mouthwatering Pani-Puri"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_centerHorizontal="true"
       android:textSize="25sp"
       android:fontFamily="cursive"
       android:textColor="@color/white"
       />
   <ImageView
       android:id="@+id/image"
       android:layout_width="250dp"
       android:layout_height="250dp"
       android:scaleType="centerCrop"
       android:src="@drawable/panipuri"
       android:layout_below="@id/toptitle"
       android:layout_margin="8dp"/>
   <TextView
       android:id="@+id/detail"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:textColor="@color/white"
       android:layout_toEndOf="@id/image"
       android:layout_alignParentEnd="true"
       android:layout_alignTop="@id/image"
       android:gravity="center"
       android:text="Details"
       android:textSize="20sp"
       android:paddingTop="8dp"
       android:paddingLeft="8dp"
       android:paddingRight="8dp"

       />
   <ImageView
       android:id="@+id/icon"
       android:layout_below="@id/detail"
       android:layout_alignStart="@id/detail"
       android:layout_width="30dp"
       android:layout_height="30dp"
       android:layout_margin="35dp"
       android:src="@drawable/ocation"/>
   <TextView
       android:id="@+id/location"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_toRightOf="@id/icon"
       android:text="Nahar chowk, Sipahi tola, Near Durga Mandir,Purnia"
       android:layout_below="@id/detail"
       android:textColor="@color/white"
       android:paddingTop="35sp"
       android:textSize="15sp"
       android:paddingRight="15dp"
       android:fontFamily="monospace"/>
   <ImageView
       android:id="@+id/watch"
       android:layout_below="@id/icon"
       android:layout_alignStart="@id/detail"
       android:layout_width="30dp"
       android:layout_height="30dp"
       android:layout_marginLeft="35dp"
       android:layout_marginRight="35sp"
       android:src="@drawable/imgicon"/>
   <TextView
       android:id="@+id/timing"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_toRightOf="@id/watch"
       android:text="Operates between 9 AM to 11 PM"
       android:layout_below="@id/location"
       android:textColor="@color/white"
       android:paddingTop="35sp"
       android:paddingRight="15dp"
       android:textSize="15sp"
       android:fontFamily="monospace"/>
   <ImageView
       android:id="@+id/description"
       android:layout_below="@id/timing"
       android:layout_alignStart="@id/detail"
       android:layout_width="30dp"
       android:layout_height="30dp"
       android:layout_margin="35sp"
       android:src="@drawable/description"/>
   <TextView
       android:id="@+id/des"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_toRightOf="@id/description"
       android:layout_below="@id/timing"
       android:textSize="15sp"
       android:textColor="@color/white"
       android:paddingTop="35sp"
       android:fontFamily="monospace"
       android:text="Home Delivery available\nRs 10 for 8 pieces.\n"/>
   <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Contact us:+91-6277665544 "
       android:layout_alignParentBottom="true"
       android:layout_centerHorizontal="true"
       android:textColor="@color/white"
       android:textSize="16sp"
       android:layout_margin="16dp"
       android:background="@color/purple_500"/>
</RelativeLayout>
  • 你应该在 sp 中使用 textSize 值。

如果您希望在您的应用中包含最新的 UI 元素。你应该试试 ConstraintLayout

快乐编码