我有一个视图,其中我想要一个按钮放在网格视图下方并填满剩余的空间。视图是一个相对布局,无论我给它什么属性,如果我将按钮与网格视图相关联,它就会消失。只有当我将它放在相对视图中并且它与父母底部对齐时才会出现,但它不会拉伸。我认为最有可能的解决方案是将按钮放在相对视图中,alignParentBottom = True然后layout_below =" id / gridview" (所有这些都是伪代码)。这是我现在的代码:
<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@drawable/pin_fragment_background"
tools:context="com.lab125.viva_app.MainActivity$PlaceholderFragment" >
<TextView
android:id="@+id/section_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/audioPIN_marquee"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="15dp"
android:paddingBottom="30dip"
android:gravity="center"
android:textSize="15sp"
android:textStyle="bold"
/>
<LinearLayout
android:id="@+id/keypad_wrapper"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_below="@id/audioPIN_marquee">
<GridView
android:id="@+id/keypad"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="90dp"
android:gravity="center"
android:horizontalSpacing="5dip"
android:verticalSpacing="5dip"
android:numColumns="3"
android:stretchMode="columnWidth" />
<Button
android:id="@+id/start_ver_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="15sp"
android:textStyle="bold"
android:text="@string/Start_Ver_Button"
android:background="@drawable/button_style" />
</LinearLayout>
<Button
android:id="@+id/audio_playback_btn"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/keypad_wrapper"
android:text="play"
android:textSize="15sp">
</Button>
</RelativeLayout>
同样,使用此代码,该按钮根本不显示。
编辑:@ Dave的建议是正确的,我可以在将方向设置为垂直后看到按钮。然而,我首先将gridView放置在线性布局中的唯一原因是,当将其android:layout_below属性设置为gridView时(通过将其android:layout_below设置为其他内容),尝试不让按钮消失。然而,对于我想要做的更准确的修复是没有将gridView的宽度和高度设置为match_parent,这是按钮消失的根本原因。因此,我设置gridView的高度来包装内容,但这导致网格缩小到每个网格元素的内容不再可见的程度。我发现原因是=&gt;我以编程方式设置gridview的宽度和高度以包装其内容,然后通过父视图的宽度和高度设置内部组件的宽度和高度。实现这是非常周期性的,这可能就是为什么当我设置它来包装内容时gridview正在缩小的原因。然后我根据屏幕的尺寸设置网格元素的宽度和高度,这固定了gridView的大小。所以现在一切都很有效。
如果有人有兴趣,这是我的新布局。
<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"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@drawable/pin_fragment_background"
tools:context="com.lab125.viva_app.MainActivity$PlaceholderFragment" >
<TextView
android:id="@+id/section_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/audioPIN_marquee"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginBottom="20dp"
android:paddingTop="15dp"
android:gravity="center"
android:textSize="15sp"
android:textStyle="bold"
/>
<GridView
android:id="@+id/keypad"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/audioPIN_marquee"
android:layout_marginTop="10dp"
android:layout_marginBottom="20dp"
android:columnWidth="90dp"
android:gravity="center"
android:horizontalSpacing="5dip"
android:verticalSpacing="5dip"
android:numColumns="3"
android:stretchMode="columnWidth" />
<Button
android:id="@+id/start_ver_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/keypad"
android:layout_alignParentBottom="true"
android:layout_marginTop="20dp"
android:textSize="15sp"
android:textStyle="bold"
android:text="@string/Start_Ver_Button"
android:background="@drawable/button_style" />
<!--
<Button
android:id="@+id/audio_playback_btn"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/keypad_wrapper"
android:text="play"
android:textSize="15sp">
</Button> -->
</RelativeLayout>
答案 0 :(得分:0)
start_ver_btn不会显示,因为gridview的宽度和高度都有match_parent,根据layout_width和height来判断,我想你想将LinearLayout的方向设置为垂直。