android - 网格布局元素以匹配父级大小

标签 android xamarin

我试图让文本输入组件与屏幕大小相匹配。 例如,这就是我想要的样子。 This

但是,如果屏幕尺寸更大,这就是我得到的。 This

所以,这是我的代码。

 <GridLayout
    android:layout_below="@+id/TopBarLayout"
    android:layout_above="@+id/BottomBarLayout"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_centerVertical="true"
    android:gravity="center"
    android:padding="30dp"
    android:id="@+id/PatientLayout"
    android:rowCount="6"
    android:columnCount="1">
    <EditText
        style="@style/Editor"
        android:layout_width="match_parent"
        android:id="@+id/PatientFirstNameEditText"
        android:hint="@string/FirstNameHint"
        android:layout_row="0"
        android:layout_column="0"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp" />
    <EditText
        style="@style/Editor"
        android:layout_width="match_parent"
        android:id="@+id/PatientLastNameEditText"
        android:hint="@string/LastNameHint"
        android:layout_row="1"
        android:layout_column="0"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp" />
    <EditText
        style="@style/Editor"
        android:layout_width="match_parent"
        android:id="@+id/PatientMiddleNameEditText"
        android:hint="@string/MiddleNameHint"
        android:layout_row="2"
        android:layout_column="0"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp" />
    <LinearLayout
        android:id="@+id/TopBarLayout"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:layout_weight="100"
        android:background="#e8e8f5"
        android:layout_row="3"
        android:layout_column="0"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp">
        <EditText
            android:inputType="date"
            style="@style/Editor"
            android:id="@+id/DateOfBirthEditText"
            android:layout_weight="90"
            android:layout_width="0dp" />
        <ImageButton
            android:src="@drawable/calendar"
            android:layout_height="match_parent"
            android:layout_width="0dp"
            android:layout_weight="10"
            android:id="@+id/ShowDatePickerButton"
            android:background="@android:color/transparent"
            android:layout_marginTop="5.0dp"
            android:layout_marginBottom="5.0dp" />
    </LinearLayout>
    <EditText
        style="@style/Editor"
        android:layout_width="match_parent"
        android:id="@+id/PatientSocialSecurityNumberEditText"
        android:hint="@string/SocialSecurityNumberHint"
        android:layout_row="4"
        android:layout_column="0"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp" />
    <RadioGroup
        android:id="@+id/TopBarLayout"
        android:padding="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_row="5"
        android:layout_column="0"
        android:orientation="horizontal"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp">
        <RadioButton
            android:text="@string/Male"
            android:padding="10dp"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:id="@+id/PatientMaleRadioButton"
            android:checked="true" />
        <RadioButton
            android:text="@string/Female"
            android:padding="10dp"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:id="@+id/PatientFemaleRadioButton" />
    </RadioGroup>
</GridLayout>

我设置了边距以匹配 5 英寸屏幕。 我希望组件能够适应屏幕的大小。例如,如果屏幕很小,文本也应该按比例变小。 我想从 gridlayout 获得与 C# winform 的网格面板相同的结果。 谢谢!

最佳答案

由于您要构建的所有内容都在网格的一列中,因此您可以在外部和内部 EditText 上使用垂直线性布局,并为两个单选按钮使用水平线性布局。您可以使用 android:layout_weight 将元素设置为页面的百分比。您还可以使用 android:layout_margin 更具体地更改边距,还有 marginTop/Bottom/Right 等。希望这会有所帮助。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical" 
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:background="#000000 ">


   <EditText
       android:layout_width="match_parent"
       android:layout_height="0dp"
       android:layout_weight="0.1"
       android:id="@+id/editText1"
       android:layout_margin="20dp"
       android:background="#ffffff "
       android:layout_gravity="center_horizontal" />

   <EditText
       android:layout_width="match_parent"
       android:layout_height="0dp"
       android:layout_weight="0.1"
       android:id="@+id/editText2"
       android:layout_margin="20dp"
       android:background="#ffffff "
       android:layout_gravity="center_horizontal" />

   <EditText
       android:layout_width="match_parent"
       android:layout_height="0dp"
       android:layout_weight="0.1"
       android:id="@+id/editText3"
       android:layout_margin="20dp"
       android:background="#ffffff "
       android:layout_gravity="center_horizontal" />

   <EditText
       android:layout_width="match_parent"
       android:layout_height="0dp"
       android:layout_weight="0.1"
       android:id="@+id/editText4"
       android:layout_margin="20dp"
       android:background="#ffffff "
       android:layout_gravity="center_horizontal" />

   <EditText
       android:layout_width="match_parent"
       android:layout_height="0dp"
       android:layout_weight="0.1"
       android:id="@+id/editText5"
       android:layout_margin="20dp"
       android:background="#ffffff "
       android:layout_gravity="center_horizontal" />

   <LinearLayout
       android:orientation="horizontal"
       android:layout_width="match_parent"
       android:layout_height="0dp"
       android:layout_weight="0.1"
       android:background="#123123 "
       android:layout_gravity="center_horizontal">

       <RadioButton
           android:layout_width="0dp"
           android:layout_weight=".5"
           android:layout_height="wrap_content"
           android:text="Option 1"
           android:id="@+id/radioButton" />
       <RadioButton
           android:layout_width="0dp"
           android:layout_weight=".5"
           android:layout_height="wrap_content"
           android:text="Option 2"
           android:id="@+id/radioButton2" />

   </LinearLayout>

   <Button
       android:layout_width="wrap_content"
       android:layout_height="0dp"
       android:layout_weight="0.1"
       android:text="New Button"
       android:id="@+id/button"
       android:layout_gravity="center_horizontal" />


</LinearLayout>

关于android - 网格布局元素以匹配父级大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38789185/

相关文章:

java - getActionBar().setDisplayHomeAsUpEnabled(true), -> java.lang.NullPointerException 无法解决

android - 将 BLENDER 模型导出到 C++ 头文件内的 OpenGL 几何体中

java - 为什么我的第二个 sqlite 表抛出异常?

c# - Xamarin 删除 TableSection 顶部边框

c# - 可移植类库项目不与 NuGet 一起工作

android - 如何创建像 spendee 应用程序一样的可滑动标签布局

java - 高分未保存在 Libgdx 中

c# - Xamarin.Forms 显示列表中的数据在调试但不在 Release模式下工作

xamarin - 如何在xamarin中隐藏导航工具栏图标?

xamarin - Xamarin跨平台中的全局异常处理