gpt4 book ai didi

android - 在 android.support.v7.widget.GridLayout 中使用 显示不正确

转载 作者:太空狗 更新时间:2023-10-29 14:49:38 25 4
gpt4 key购买 nike

我正在尝试使用 <include>包括 ImageButtonandroid.support.v7.widget.GridLayout 里面.问题是,如果我没有在 <include> 上明确指定所有属性元素,它们无法正确显示。换句话说,包含是没有意义的,因为我必须重新声明每个 <include> 上的所有属性。元素。

dialpad_button.xml

<?xml version="1.0" encoding="utf-8"?>
<ImageButton
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:grid="http://schemas.android.com/apk/res-auto"
android:layout_width="0dp"
android:layout_height="0dp"
grid:layout_columnWeight="1"
grid:layout_rowWeight="1"
grid:layout_gravity="fill"
android:layout_margin="5dp"
android:scaleType="centerInside"/>

dialpad_view.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.GridLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:grid="http://schemas.android.com/apk/res-auto"
android:id="@+id/dialpad_grid_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
grid:alignmentMode="alignBounds"
grid:columnCount="2"
grid:rowCount="1">

<include
android:id="@+id/dialpad_view_btn1"
android:src="@drawable/dialpad_1"
layout="@layout/dialpad_button" />

<include
android:id="@+id/dialpad_view_btn2"
android:src="@drawable/dialpad_2"
layout="@layout/dialpad_button" />


</android.support.v7.widget.GridLayout>

如果我直接在 <include> 上声明所有属性s,这是它​​在 XML 中的样子:

    <include
layout="@layout/dialpad_button"
android:id="@+id/dialpad_view_btn1"
android:src="@drawable/dialpad_1"
android:layout_width="0dp"
android:layout_height="0dp"
grid:layout_columnWeight="1"
grid:layout_rowWeight="1"
grid:layout_gravity="fill"
android:layout_margin="5dp"
android:scaleType="centerInside" />

正如您在下面的比较图中看到的那样,按钮现在可以正确缩放,但无法看到图像。

如果我更改 <include> s 至 ImageButton , 一切按预期工作。

    <ImageButton
android:id="@+id/dialpad_view_btn1"
android:src="@drawable/dialpad_1"
android:layout_width="0dp"
android:layout_height="0dp"
grid:layout_columnWeight="1"
grid:layout_rowWeight="1"
grid:layout_gravity="fill"
android:layout_margin="5dp"
android:scaleType="centerInside" />

Comparison of different XML-layouts

有解决办法吗?

由于我的拨号盘中将有 12 个几乎相同的按钮,我真的很想通过包含一个"template"并只修改每个按钮的必要属性(即 srcid ).

编辑

按照一个答案中的建议尝试使用样式,但没有奏效。我应用样式的所有 View 都没有显示。更奇怪的是,即使我只是将样式应用于 GridLayout 中的其中一个 View 。 ,只显示最后一个 View (为了便于阅读,我将此处的示例代码缩短为只有两个 View ,实际上我有十二个)。

这是我尝试使用的样式:

<?xml version="1.0" encoding="utf-8"?>
<resources
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:grid="http://schemas.android.com/apk/res-auto" >

<style name="dialPadButtonStyle">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">0dp</item>
<item name="grid:layout_columnWeight">1</item>
<item name="grid:layout_rowWeight">1</item>
<item name="grid:layout_gravity">fill</item>
<item name="android:layout_margin">5dp</item>
<item name="android:scaleType">centerInside</item>
<item name="android:background">@android:color/transparent</item>
</style>
</resources>

最佳答案

也许您可以使用一种样式来声明公共(public)属性,然后为每个按钮设置它。

<style name="dialPadButtonStyle">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">0dp</item>
<item name="android:layout_columnWeight">1</item>
<item name="android:layout_rowWeight">1</item>
<item name="android:layout_margin">5dp</item>
<item name="android:src">@android:drawable/ic_menu_camera</item>
</style>

我还添加了:GridLayout 的 columnCount 为 3,rowCount 为 4,并添加了 12 个具有该样式的 ImageButton。最后的结果是这样的: enter image description here

关于android - 在 android.support.v7.widget.GridLayout 中使用 <include> 显示不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36404441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com