[英]How to keep aspect ratio of of circles in table layout in Android
我正在 Java Android 中构建一个 5x6 圆的网格。 我正在使用可绘制形状:椭圆形,具有相同的高度和宽度来创建圆圈,但它们最终变成了椭圆形。
椭圆形的图像,而不是圆形
我怎样才能确保他们会保持圆圈?
circle_blue.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<solid android:color="#637bfe"/>
<stroke android:color="#FFFFFF" android:width="5dp"/>
<!-- Set the same value for both width and height to get a circular shape -->
<size android:width="40dp" android:height="40dp"/>
</shape>
</item>
</selector>
下面是我用来构建网格的 xml。 我使用 FrameLayout 来定义纵横比,然后使用表格布局将圆圈放入结构中。
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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_width="match_parent"
android:layout_height="match_parent"
tools:context="at.react.reaction.MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Instruction"
android:textSize="24sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.04000002" />
<FrameLayout
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginEnd="0dp"
android:layout_marginStart="0dp"
android:layout_marginTop="0dp"
android:background="@android:color/white"
app:layout_constraintDimensionRatio="H,5:6"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView">
<TableLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp">
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:id="@+id/btn11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn13"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn15"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:id="@+id/btn21"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn22"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn23"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn24"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn25"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:id="@+id/btn31"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn32"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn33"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn34"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn35"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:id="@+id/btn41"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn42"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn43"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn44"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn45"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:id="@+id/btn51"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn52"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn53"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn54"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn55"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:id="@+id/btn61"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn62"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn63"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn64"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn65"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/circle_blue"
android:elevation="9dp"
android:textColor="#fff" />
</TableRow>
</TableLayout>
</FrameLayout>
</android.support.constraint.ConstraintLayout>
谢谢你的帮助!!
谢谢杀手!
使用 ImageButton 而不是 Button 解决了这个问题!
尝试android:scaleType="centerCrop"
如果不起作用,请使用其他值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.