android-layout 相关问题

布局定义用户界面的可视结构,例如活动,片段或应用程序窗口小部件的UI。

如何将线性布局与垂直中心对齐?

我正在尝试对齐 LinearLayout 的垂直中心,如下图所示(天色边框)以删除按钮的垂直中心。 所以我将 id:groupNumbers 的重力设置为 center_vertical。 但没有

回答 8 投票 0

应用程序在设备上运行,但在模拟器上崩溃

我有一个应用程序,在我的手机设备上运行时可以完美运行。但是,在模拟器上运行时会崩溃。 2021-01-11 06:58:24.719 19783-19783/com.example.myapplication E/RecyclerView:无适配器

回答 2 投票 0

发布活动 XML

如何在应用程序中拥有灵活的帖子创建功能,就像我们在 Twitter 等社交媒体应用程序中那样,能够自由添加文本、图像、位置,而无需同时添加它们......

回答 1 投票 0

将收到的电子邮件保存为文件,然后阅读它们(android 和 javamail)

我正在开发一个android项目,可以从任何gmail帐户读取电子邮件,我想做的是从收件箱接收已读或未读的邮件,然后将它们存储为文件。我的目标是......

回答 1 投票 0

Android:在隐藏顶部/状态栏的同时实现边缘到边缘

我目前正在尝试为 Android 应用程序实现边缘到边缘,并使用本指南成功完成了它(https://developer.android.com/training/gestures/edge-to-edge#lay-完全出-

回答 1 投票 0

FrameLayout 与 NestedScrollView 的高度不匹配

我在 NestedScrollView 中有一个 FrameLayout,如 我在 NestedScrollView 中有一个 FrameLayout,如 <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000000"> 但是 FrameLayout 没有填充 NestedScrollView 的高度。我该如何解决这个问题? 检查此解决方案 使用fillViewport="true" 如果需要,此属性会导致滚动视图的子视图扩展到 ScrollView 的高度。当child高于ScrollView时,该属性不起作用。 <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" app:layout_behavior="@string/appbar_scrolling_view_behavior"> 更新 此解决方案也适用于 androidx.coordinatorlayout.widget.CoordinatorLayout 和 androidx.core.widget.NestedScrollView。

回答 1 投票 0

Android Lollipop CardView 上的波纹效果

我试图通过在活动 XML 文件中设置 android:backgound 属性来让 CardView 在触摸时显示涟漪效果,如 Android 开发人员页面上所述,但它...

回答 15 投票 0

Android Material TextInputLayout 错误消息显示在 Material TextInputEditText 子项后面

我目前正在使用 Material 组件创建 Android UI。 在我的活动中,我使用 com.google.android.material.textfield.TextInputLayout 组件的错误功能。 问题是如果...

回答 3 投票 0

以编程方式在 Android 中使应用程序全屏

我知道应用程序可以通过活动清单中的标签进行全屏 android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 是否可以从内部切换到全屏模式.. .

回答 7 投票 0

Android XML:“与具有相同 ID 的另一个标签冲突”

我最近从我的项目中删除了一个片段,包括其布局和视图模型。 (FragmentAddFlight、VmAddFlight、fragment_add_flight.xml) 令人惊讶的是我收到这些错误: [数据绑定...

回答 15 投票 0

Android 不同语言的文本采用不同的高度

我们在应用程序中显示一些文本(例如在带有 GridLayoutManager 的 RecyclerView 中)。该文本以不同语言显示,如下图突出显示。因此,

回答 1 投票 0

自定义视图内视图的坐标根本不匹配

我正在开发一个类似家谱的应用程序。我使用力导向布局算法来计算节点将放置的位置。这些节点是我自己创建的自定义视图,称为

回答 1 投票 0

如何在recyclerView android中填充项目宽度子项?

嘿我在android 上工作。我想让孩子们适应 recyclerview android 的整个视图。我有水平回收视图。我将在图表中展示我想要的内容。 场景1 当我有更多物品时

回答 4 投票 0

如何在 reyclerview android 中填充项目宽度子项

嘿我在android 上工作。我想让孩子们适应 recyclerview android 的整个视图。我有水平回收视图。我将在图表中展示我想要的内容。 场景1 当我有更多物品时

回答 4 投票 0

响应式布局可见性消失了

我有 3 个 xml 组件。线性进度、tvQuestionNumber、tvQuestion。 TvQuestion 的部分内容在这里: 我有 3 个 xml 组件。线性进度、tvQuestionNumber、tvQuestion。 TvQuestion 的部分内容在这里: <TextView android:id="@+id/tvQuestion" app:layout_constraintTop_toBottomOf="@id/linearProgress" /> 当 LinearProgress 可见性消失时。我想改变如下: <TextView android:id="@+id/tvQuestion" app:layout_constraintTop_toBottomOf="@id/tvQuestionNumber" /> 我怎样才能让它像那样响应。 将可见性设置为“GONE”后,添加 ConstraintLayout.LayoutParams layoutParams = (ConstraintLayout.LayoutParams) tvQuestion.getLayoutParams(); layoutParams.topToBottom = R.id.tvQuestionNumber; tvQuestion.setLayoutParams(layoutParams);

回答 1 投票 0

Jetpack Compose:如何使用精确的 (x,y) 坐标将 UI 元素定位在其父级中?

根据自定义布局的文档:“每个 UI 元素都有一个父元素,并且可能有多个子元素。每个元素也位于其父元素内,指定为 (x, y) 位置...

回答 4 投票 0

Android:包含来自另一个模块资源的布局文件

我正在开发项目PROJ,它由2个模块com.example.MOD1和com.example.MOD2组成, 在 MOD2 的资源 man_layout.xml 中,我想包含来自 MOD1 的 sub_layout.xml。我愿意: MOD2/res/layout/man_...

回答 3 投票 0

ViewBindings 没有为您提供程序化充气器是否存在技术原因?

似乎在每个 Android 版本中,布局充气器都变得越来越慢。在许多情况下,Lollipop 和 Upside Down Cake 之间的速度减慢是 4 倍。人们指出的解决方案是编程......

回答 1 投票 0

约束布局障碍未按预期工作

我有 2 个视图,我需要在下面设置一个屏障,但该屏障无法按预期工作。 这是我的布局。 我有 2 个视图,我需要在下面设置一个屏障,但该屏障无法按预期工作。 这是我的布局。 <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> <TextView android:id="@+id/textView15" android:layout_width="0dp" android:layout_height="wrap_content" android:text="This is a text view" app:layout_constraintEnd_toStartOf="@+id/t1" android:textSize="20sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <com.google.android.material.textfield.TextInputLayout android:id="@+id/t1" android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/textView15" app:layout_constraintTop_toTopOf="parent"> <com.google.android.material.textfield.TextInputEditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="This is a demo text to check wrap content"/> </com.google.android.material.textfield.TextInputLayout> <androidx.constraintlayout.widget.Barrier android:layout_width="wrap_content" android:layout_height="wrap_content" app:barrierDirection="bottom" app:constraint_referenced_ids="textView15,t1"/> </androidx.constraintlayout.widget.ConstraintLayout> 黑色虚线是屏障。 这可能是一个错误或者我做错了,预览和实际设备中的结果是相同的 如果您指定 app:layout_optimizationLevel="none" 在ConstraintLayout的XML中,您会发现障碍物将被正确放置。我不确定设置优化级别能达到什么效果,但最近这是一个有障碍的问题。 (ConstraintLayout 版本 2.1.3)。 这是抑制优化之前布局的样子。如前所述,屏障上升到右侧 TextView。 我们通过在 XML 中声明而不进行其他更改来抑制优化: <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent" app:layout_optimizationLevel="none" xmlns:app="http://schemas.android.com/apk/res-auto"> 现在布局如下所示: 障碍物已降至其所属的右侧TextView下方。 这是与 ConstraintLayout 版本 2.1.3 一起使用的。 implementation 'androidx.constraintlayout:constraintlayout:2.1.3' (似乎将优化级别设置为除standard之外的任何值都可以解决此问题。) 添加 app:layout_constrainedHeight="true" 障碍引用的视图解决了我的问题。 <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> <TextView android:id="@+id/textView15" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="visible" android:text="This is a text view" app:layout_constraintEnd_toStartOf="@+id/t1" android:textSize="20sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <com.google.android.material.textfield.TextInputLayout android:id="@+id/t1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="visible" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/textView15" app:layout_constraintTop_toTopOf="parent"> <com.google.android.material.textfield.TextInputEditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="This is a demo text to check wrap content"/> </com.google.android.material.textfield.TextInputLayout> <androidx.constraintlayout.widget.Barrier android:id="@+id/barrier" android:layout_width="wrap_content" android:layout_height="wrap_content" app:barrierDirection="bottom" app:constraint_referenced_ids="textView15,t1"/> <Space android:id="@+id/space" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="visible" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@id/barrier" /> </androidx.constraintlayout.widget.ConstraintLayout> 正如之前所写,ConstraintLayout 2.1.3 和 2.1.4 版本无法正常工作,您可以将其降级到 2.0.0。如果没有,您可以使用两种方法。在这两种情况下都删除 <androidx.constraintlayout.widget.Barrier>。 插入LinearLayout以占据所需的视图。例如,如果水平位置有 2 个 TextInputLayout,则可以这样写: <LinearLayout android:id="@+id/layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/upper_view"> <com.google.android.material.textfield.TextInputLayout android:id="@+id/input_layout_1" android:layout_weight="1" ... <com.google.android.material.textfield.TextInputLayout android:id="@+id/input_layout_2" android:layout_weight="1" ... </LinearLayout> 如果您有具有不同视图的复杂布局,请这样写。 <Space android:id="@+id/space" android:layout_width="match_parent" android:layout_height="0dp" app:layout_constraintBottom_toBottomOf="@id/input_layout_2" app:layout_constraintTop_toBottomOf="@+id/upper_view" /> 那么你应该在代码中更改 Space 高度。也许您可以将此代码应用于所有TextInputLayout。 // View size change listener private fun View.onSizeChange(callback: () -> Unit) { addOnLayoutChangeListener(object : OnLayoutChangeListener { override fun onLayoutChange( view: View?, left: Int, top: Int, right: Int, bottom: Int, oldLeft: Int, oldTop: Int, oldRight: Int, oldBottom: Int, ) { view?.removeOnLayoutChangeListener(this) if (right - left != oldRight - oldLeft || bottom - top != oldBottom - oldTop) { callback() } } }) } binding.inputLayout2.onSizeChange { // First remove bottom constraint val layoutParams = binding.space.layoutParams as ConstraintLayout.LayoutParams layoutParams.bottomToBottom = ConstraintLayout.LayoutParams.UNSET // Now set height of a <Space> (maximum of two TextInputLayouts) val h1 = binding.inputLayout1.height val h2 = binding.inputLayout2.height binding.inputLayout2.postDelayed({ binding.space.updateLayoutParams { height = max(h1, h2) } }, 1) } 然后将底部视图绑定到 LinearLayout 或 Space 而不是 Barrier。 仅需要 app:layout_optimizationLevel="barrier"。 如果我们使用 app:layout_optimizationLevel="none" 布局渲染可能需要更长的时间,因为每个约束都会被更彻底地重新评估。对于复杂的布局,这可能会导致性能问题。

回答 5 投票 0

我应该在 Android Jetpack Compose 中使用 ConstraintLayout 以获得更好的性能吗?

在 Jetpack Compose 之前,ConstraintLayout 是构建复杂布局的推荐方法,因为它允许扁平化 UI 层次结构。请参阅管理复杂性:布局很重要文档部分。 ...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.