如何在嵌套线性布局中使 imageButton 的高度占屏幕尺寸的 25%。 Android XML 横向布局
Posted
技术标签:
【中文标题】如何在嵌套线性布局中使 imageButton 的高度占屏幕尺寸的 25%。 Android XML 横向布局【英文标题】:How to make imageButton' height take 25% of screen sizes in nested linear layout. Android XML landscape layout 【发布时间】:2019-10-05 15:55:41 【问题描述】:我想显示 9 张图片。我希望布局是 3 x 3。
问题是第一行的前 3 张图片占据了屏幕尺寸的三分之二。
我尝试在垂直线性布局中添加嵌套的水平线性布局,每个水平线性布局的 wightsum = 3, 1。我还添加了 app:layout_heightPercent="25%" app:layout_widthPercent="25%" 并没有改变。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:context=".MainActivity"
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:weightSum="3"
android:orientation="vertical">
<LinearLayout
android:layout_
android:layout_
android:layout_weight="1"
android:weightSum="3"
android:orientation="horizontal">
<ImageButton
android:id="@+id/image11"
android:layout_
android:layout_
android:layout_gravity="center"
android:layout_marginLeft="2dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:adjustViewBounds="true"
android:background="@drawable/image1"
android:padding="10dp"
android:scaleType="fitXY"
app:layout_heightPercent="25%"
app:layout_widthPercent="25%"/>
<ImageButton
android:layout_
android:layout_
android:background="@drawable/image1"
android:layout_marginLeft="2dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:adjustViewBounds="true"
android:padding="10dp"
android:scaleType="fitXY"
android:id="@+id/image2"
android:layout_gravity="center"
app:layout_heightPercent="25%"
app:layout_widthPercent="25%" />
<ImageButton
android:layout_
android:layout_
android:background="@drawable/image1"
android:layout_marginLeft="2dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:adjustViewBounds="true"
android:padding="10dp"
android:scaleType="fitXY"
android:id="@+id/image3"
android:layout_gravity="center"
app:layout_heightPercent="25%"
app:layout_widthPercent="25%" />
</LinearLayout>
<LinearLayout
android:layout_
android:layout_
android:layout_weight="1"
android:weightSum="3">
<ImageButton
android:layout_
android:layout_
android:background="@drawable/image1"
android:layout_marginLeft="2dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:adjustViewBounds="true"
android:padding="10dp"
android:scaleType="fitXY"
android:id="@+id/image4"
android:layout_gravity="center"
app:layout_heightPercent="25%"
app:layout_widthPercent="25%" />
<ImageButton
android:layout_
android:layout_
android:background="@drawable/image1"
android:layout_marginLeft="2dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:adjustViewBounds="true"
android:padding="10dp"
android:scaleType="fitXY"
android:id="@+id/image5"
android:layout_gravity="center"
app:layout_heightPercent="25%"
app:layout_widthPercent="25%" />
<ImageButton
android:layout_
android:layout_
android:background="@drawable/image1"
android:layout_marginLeft="2dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:adjustViewBounds="true"
android:padding="10dp"
android:scaleType="fitXY"
android:id="@+id/ima6"
android:layout_gravity="center"
app:layout_heightPercent="25%"
app:layout_widthPercent="25%" />
</LinearLayout>
<LinearLayout
android:layout_
android:layout_
android:layout_weight="1"
android:weightSum="3">
<ImageButton
android:layout_
android:layout_
android:background="@drawable/image1"
android:layout_marginLeft="2dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:adjustViewBounds="true"
android:padding="10dp"
android:scaleType="fitXY"
android:id="@+id/image7"
android:layout_gravity="center"
app:layout_heightPercent="25%"
app:layout_widthPercent="25%" />
<ImageButton
android:layout_
android:layout_
android:background="@drawable/image1"
android:layout_marginLeft="2dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:adjustViewBounds="true"
android:padding="10dp"
android:scaleType="fitXY"
android:id="@+id/image8"
android:layout_gravity="center"
app:layout_heightPercent="25%"
app:layout_widthPercent="25%" />
<ImageButton
android:layout_
android:layout_
android:background="@drawable/image1"
android:layout_marginLeft="2dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:adjustViewBounds="true"
android:padding="10dp"
android:scaleType="fitXY"
android:id="@+id/image9"
android:layout_gravity="center"
app:layout_heightPercent="25%"
app:layout_widthPercent="25%" />
</LinearLayout>
</LinearLayout>
【问题讨论】:
可以拍出你想要的照片吗?你的图片最终应该是什么样子? 这里是横向布局的 3x3 图片的链接:drive.google.com/file/d/1P55zdfZeoqpABPxI5i1cynrHI9F_ST1Z/… 如果这张照片是你想要的,你的代码已经可以工作了!图片中的行和列占您提到的 33% 而不是 25%! 【参考方案1】:如果您只想获取宽度和高度按钮,您可以通过此函数设置布局按钮的高度和宽度
private fun calculateImageSize()
val windowManager = getSystemService(Context.WINDOW_SERVICE) as WindowManager
val displayMetrics = DisplayMetrics()
windowManager.defaultDisplay.getMetrics(displayMetrics)
var width = displayMetrics.widthPixels
//div 3 because want screen (3*3) if u want 25% you can change 4 (25+25+25+25)
var realWitdh = width / 3
var mWidthMenu = realWitdh
var mHeightMenu = realWidth
【讨论】:
以上是关于如何在嵌套线性布局中使 imageButton 的高度占屏幕尺寸的 25%。 Android XML 横向布局的主要内容,如果未能解决你的问题,请参考以下文章
如何在Android中将imageButton设置为子视图(webview)的左上角