- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我试图创建一个完整的循环布局,以便如果我把任何内容放在该布局。内容应该在圆圈内。怎么可能呢?我试着用下面的方法。但形状不是一直都是圆形的。有时根据空间的不同它会变成椭圆形。如何保持布局的循环性和内容应该一直在里面?
<LinearLayout
android:id="@+id/zodiac_Layout"
android:layout_width="100dp"
android:layout_height="100dp"
android:orientation="vertical"
android:background="@drawable/circular_background">
<ImageView
android:id="@+id/zodiac_img"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginRight="2dp"
android:adjustViewBounds="true"
android:src="@drawable/sunrise" />
<TextView
android:id="@+id/zodiac_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="5dp"
android:text="@string/na"
android:textColor="#fff"
android:textSize="@dimen/nakshatra_text_size" />
</LinearLayout>
circular_background.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#50514F"/>
<size android:width="5dp"
android:height="5dp"/>
</shape>
ImageView
match_parent
。它从布局的圆形中出来。我希望内容沿着布局的圆形裁剪。
最佳答案
因为我们在评论中聊到的。现在我知道你真正想要的是你的ImageView
和TextView
的圆形裁剪。因此,经过一番努力,我决定形成一个解决方案,将产生一个输出,如下图所示:。不要担心文本视图,你可以把它放在任何地方。即使是在图像之上!改变它的大小!首先,您必须知道没有默认的实现,这意味着在android中没有提供循环裁剪视图的默认视图类。因此,这里有两种方法可以仅使用xml来解决这个问题!
第一选择(最佳选择)
我们将使用一个FrameLayout
布局,它是一个在彼此之上添加视图的布局。这意味着如果你放第一个,那么第二个将在第一个上面等等。
要求
若要在圆形视图中很好地适应图像,则图像应为正方形(这只是逻辑上的),因此我们需要将宽度和高度设置为相等的值。
我们需要一个带有笔划的圆形(想法是把它放在一个计算良好的视图大小之上!)
在drawable
文件夹中创建一个名为circular_image_crop.xml
的文件。然后粘贴代码(别担心稍后会描述它!)不要忘记阅读其中的评论:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#00ffffff"/>
<!--The above colour is completely transparent!-->
<stroke android:width="20dp" android:color="#ec407a" />
<size android:width="140dp" android:height="140dp"/>
</shape>
drawable
文件后,我们将不得不生成
FrameLayout
(此框架布局不是任何视图的根视图,只需将其复制到您要显示此布局的任何视图中)继续并粘贴下面的代码(我们稍后会解释!)再次阅读其中的评论:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ec407a">
<!-- This is our framelayout! Notice our background color is the same as the one in the stroke of our drawable. Also this is your image view notice the it has width and height similar (square) do use match parent or wrap content just define a square and views will be position by adjust view bounds true-->
<ImageView
android:id="@+id/image_view_user_profile_image"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:adjustViewBounds="true"
android:contentDescription="@string/your_image_description"
android:src="@drawable/your_image" />
<!-- Ooh here we have another image! This is an image just for displaying our drawable and crop our image (how?? dont worry!) -->
<ImageView
android:layout_width="140dp"
android:layout_height="140dp"
android:layout_gravity="center_horizontal"
android:contentDescription="@string/also_your_image_description_if_any"
android:src="@drawable/circular_image_crop" />
<!--This text view we almost forget here it is!-->
<TextView
android:id="@+id/your_text_view_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginBottom="8dp"
android:layout_marginTop="125dp"
android:gravity="center"
android:text="John Nanai Noni"
android:textColor="#ffffff"
android:textSize="16sp"
android:textStyle="bold" />
</FrameLayout>
drawable
这是一个圆形,并且在中心有一个圆孔(空间),与我们的高度和图片相匹配。最后,我们添加textview并将其放在所有这些视图的顶部,但放在底部(它不应该遮挡图像,对吧?)。因此,我们可以理解的方法是将下面的图像视为所需的轮廓(不要认为它很复杂):
因此,从那里我们可以看到它是如何在图像的中间进行圆形裁剪的,等等
下一阶段:
从那里我们可以将相同的背景色应用到整个布局(framelayout),以隐藏圆形的东西,留下我们自己的可见空间。
是的,我们已经完成了我们的布局!定制呢。
<solid>
或
width
(图像是正方形记忆)为x dps。那么
height
中的值是
drawable
并将拐角半径设置为cardview的大小例如下面的代码:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="280dp"
android:layout_height="280dp"
android:layout_gravity="center_horizontal"
android:layout_margin="30dp"
app:cardCornerRadius="140dp"
app:cardElevation="12dp">
<ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center"
android:adjustViewBounds="true"
android:src="@drawable/login_back_ground" />
</android.support.v7.widget.CardView>
关于android - 如何创建完整的Round LinearLayout或RelativeLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46972667/
我正在尝试将我的应用布局从 LinearLayout 切换到 RelativeLayout。对我来说,保持良好的代码结构很重要,我认为如果我有一个父级 RelativeLayyout 用于整个屏幕,然
我正在尝试动态构建由多个图像组成的相关布局。这些相对布局将显示在先前相对布局的下方/右侧。 我从两个相对布局(rl100 和 rl200)开始。 rl200 低于 rl100。但是 rl200 并不低
作为一名 Android 开发人员,我是一个新手,我目前正在了解 RelativeLayout,但面临一个较小的问题,即 Textview 在图像上重叠。在这里,我为您提供了我想要的和我得到的图像以及
我有一个 ListView,其中填充了 RelativeLayouts。这些 RelativeLayouts 的内容可以改变,从而分别改变它们的高度。在每个 RelativeLayout 上,我在布局
我有一个 RelativeLayout,这个 Layout 有两个 child ,一个是 MapView,另一个是包含按钮的 RelativeLayout。 我希望它看起来像那样 但是我的透明框(Re
RelativeLayout in Android Studio 我有一个水平的 LinearLayout,其中有一个 RelativeLayout,我希望另一个 RelativeLayout 位于其
我的 Activity 布局必须如下所示: 屏幕分为 3 个部分(3“行”) 第一部分由左侧的图像和旁边的两个 TextView 组成。 第二部分是一个大文本,放入 ScrollView 中以便滚动。
我有一个如下的 relativeLayout: 在java代码中,我想在listview的左边添加一个view,但是没有成功: m_relativeLayout = (RelativeL
我想通过拖动 ImageView/RelativeLayout 的角来增加 ImageView/RelativeLayout 的大小。但在宽度上没有差异,并将其设置为底部。我通过使用 android:
我正在尝试获取我的 RelativeLayout 的尺寸。 许多人告诉我使用以下代码: RelativeLayout relativeLayout = (RelativeLayout) fin
我还没有找到解决我的问题的方法,也许你可以在这里帮助我。 我正在使用带有 ImageView 和 TextView 作为 subview 的 RelativeLayout。 TextView 包含大文
我有一个带有 ImageView 和 TextView 的 RelativeLayout。我想要 TextView 位于 ImageView 正下方(带有小填充)以及 ImageView 和 Text
每次单击按钮时,我都尝试在新 Activity (已创建)中添加一个新的 TextView,但我也遇到了多个错误,例如空指针异常和非法状态异常。 这是我在 button Activity 中使用的代码
有没有办法将高斯模糊效果应用于 View ?我想将此效果应用于另一个布局之上的相对布局。我找到了this ,但它仅适用于图像。P.S.:相对布局有纯色(我使用了setBackgroundColor方法
我有一个益智游戏,其中的棋盘是一个矩形,边框由一个网格单元长的棋子组成。我有一种随机化图像并将它们环绕在关卡周围的方法,但是......这真的很糟糕。它有一个最奇怪的错误:根据运行的 Android
我正在尝试创建一个拼字游戏,您可以在拼字游戏中向右或向左拖动一个字母,然后交换字母。以编程方式对 RelativeLayout 中的项目重新排序的最佳方法是什么,以便在向左拖动字母时,tile 通过的
我正在添加 accessebility支持一些应用程序。它适用于标准 UI 元素(例如按钮),但由于某种原因不适用于我的自定义元素,即带有 ImageView 和 TextView 的 Relativ
我正在从事一个涉及在图像上绘画的项目。 要删除不需要的直线或曲线,我必须绘制一个边框和 X 按钮将其删除。 我有一个相对布局,其中有手绘 Canvas 。在编辑模式下,我应该像你在图片中看到的那样制作
我在 android 中为 relativelayout 编写了一些代码,但没有 xml,下面是我使用的代码。 package layout.program; import android.app.
我有一个使用相对布局的表格行设置。它有 2 个 TextView,我希望它们具有相等的间距和左对齐的文本。请参阅下面的当前设置。这有一个 TextView 左对齐,另一个右对齐。当我更改为对齐左侧内容
我是一名优秀的程序员,十分优秀!