【发布时间】:2014-08-07 00:39:55
【问题描述】:
我有一个视图,我希望将一个按钮放置在网格视图下方并填充剩余空间。该视图是一个相对布局,无论我赋予它什么属性,如果我将按钮与网格视图相关联,它就会消失。仅当我将其放置在与父底部对齐的相对视图中时,它才会出现,但它不会拉伸。我认为最有可能的解决方案是,虽然它也不起作用,但是将按钮放在相对视图中,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 的高度设置为包裹内容,但这会导致网格缩小到每个网格元素的内容不再可见的程度。我发现其原因是 => 我以编程方式设置 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>
【问题讨论】:
-
哪个按钮?你想向哪个方向伸展它? audio_playback_btn 可见吗?
标签: android gridview android-linearlayout android-button android-relativelayout