gpt4 book ai didi

android - 如何解决 Android 问题 9161,其中bottomRightRadius 和bottomLeftRadius 被交换?

转载 作者:IT王子 更新时间:2023-10-28 23:35:55 24 4
gpt4 key购买 nike

我的目标:

Figure 1: The Goal
图 1:目标

所以,在我知道这个问题之前,这是我尝试过的。

首先,一个基本布局:

<LinearLayout
android:orientation="horizontal"
android:layout_below="@id/heading"
android:layout_marginTop="10dp"
android:layout_width="@dimen/horizontal_two_button_width"
android:layout_height="@dimen/button_height_small" >

<Button
android:id="@+id/button_one"
android:layout_width="0dp"
android:layout_weight="1.0"
android:layout_height="fill_parent"
android:padding="10dp"
style="@style/ButtonText"
android:background="@drawable/button_left_green" />

<Button
android:id="@+id/button_two"
android:layout_width="0dp"
android:layout_weight="1.0"
android:layout_height="fill_parent"
android:padding="10dp"
style="@style/ButtonText"
android:background="@drawable/button_right_green" />

</LinearLayout>

“button_left_green”可绘制对象:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_left_green_pressed"
android:state_pressed="true" />
<item android:drawable="@drawable/button_left_green_focused"
android:state_focused="true" />
<item android:drawable="@drawable/button_left_green_default" />
</selector>

例如,'button_left_green_default' drawable:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/shadow" />
<corners
android:radius="5dp"
android:topLeftRadius="5dp"
android:topRightRadius="0dp"
android:bottomLeftRadius="5dp"
android:bottomRightRadius="0dp" />
</shape>
</item>
<item
android:bottom="19dp"
android:top="1dp"
android:left="1dp"
android:right="1dp" >

<shape android:shape="rectangle">
<gradient
android:startColor="@color/button_left_green_top_gradient_start"
android:endColor="@color/button_left_green_top_gradient_end"
android:angle="270" />

<corners
android:radius="5dp"
android:topLeftRadius="5dp"
android:topRightRadius="0dp"
android:bottomLeftRadius="0dp"
android:bottomRightRadius="0dp" />
</shape>
</item>

<item
android:top="19dp"
android:bottom="1dp"
android:left="1dp"
android:right="1dp" >

<shape android:shape="rectangle" >
<solid android:color="@color/button_left_green_bottom_gradient" />

<corners
android:radius="5dp"
android:topLeftRadius="0dp"
android:topRightRadius="0dp"
android:bottomLeftRadius="5dp"
android:bottomRightRadius="0dp" />
</shape>
</item>
</layer-list>

所以,毕竟,我得到了图 2 中的图像:
Figure 2: Take One
图 2:拿一个

在仔细检查了底角的定义后,我确信我疯了,直到我发现了已知问题:http://code.google.com/p/android/issues/detail?id=9161

我宁愿不只是交换它们,因为如果/当问题得到解决时,按钮将在新版本中损坏。

我的一个想法是将实际按钮保留为常规矩形(即没有角半径)并用圆角矩形包裹两个按钮。我向具有圆角的 LinearLayout 添加了一个背景可绘制对象,但按钮角与 LinearLayout 圆角边缘的边缘重叠(参见图 3)。

Figure 3: Take Two
图 3:拿两个

如何将按钮的背景保持在其父级可绘制背景的范围内?或者您对如何解决该错误有任何其他建议?

最佳答案

另一种解决方案是创建另一个名为“drawable-v12”的文件夹。

在此处放置正确的半径(因此 bottomLeftRadius,topLeftRadius),并在原始可绘制文件夹中放置交换的值。那么3.1+会使用v12文件夹,pre 3.1版本会使用drawable文件夹。

关于android - 如何解决 Android 问题 9161,其中bottomRightRadius 和bottomLeftRadius 被交换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6003382/

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