android-layout 相关问题

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

Android布局渲染问题

我有一个RecyclerView列表,最近在布局activity_main.xml中出现了“渲染问题”: java.lang.NoSuchFieldError:ACTION_SCROLL_IN_DIRECTION 在 androidx.core.view.accessib...

回答 1 投票 0

查找在资源缩减期间导致问题的确切 xml 文件

我在我的Android项目中启用了shrinkResources true。当我在发布模式下运行应用程序时,它会抛出以下错误。 [行,列]处的解析错误:[1,1] 消息:内容不允许...

回答 1 投票 0

从状态列表drawable中获取特定的drawable

我有一个状态列表可绘制对象,我想从状态列表可绘制对象中获取特定的可绘制对象: 我有一个状态列表可绘制对象,我想从状态列表可绘制对象中获取特定的可绘制对象: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:kplus="http://schemas.android.com/apk/res-auto"> <item kplus:key_type_space_alt="true" android:state_pressed="true" android:drawable="@drawable/space_1_pressed" /> <item kplus:key_type_space_alt="true" android:drawable="@drawable/space_1_normal" /> <!-- TopNav keys. --> <item kplus:key_type_topnav="true" android:state_pressed="true" android:drawable="@drawable/tab_down" /> <item kplus:key_type_topnav="true" android:state_selected="true" android:drawable="@drawable/tab_down" /> <item kplus:key_type_topnav="true" android:drawable="@drawable/tab_normal" /> <!-- TopRow keys. --> <item kplus:key_type_toprow="true" android:state_pressed="true" android:drawable="@drawable/numeric_presseed" /> <item kplus:key_type_toprow="true" android:drawable="@drawable/numeric_normal" /> </selector> 我为每个键选择正确的可绘制状态,如下所示: if (keyIsNumbers) { if (KPlusInputMethodService.sNumbersState == 2) { drawableState = mDrawableStatesProvider.KEY_STATE_TOPNAV_CHECKED; } } 现在状态定义如下: KEY_STATE_TOPNAV_NORMAL = new int[] {keyTypeTopNavAttrId}; KEY_STATE_TOPNAV_PRESSED = new int[] {keyTypeTopNavAttrId, android.R.attr.state_pressed}; KEY_STATE_TOPNAV_CHECKED = new int[] {keyTypeTopNavAttrId, android.R.attr.state_selected}; 现在我的问题是如何为每个状态提取正确的可绘制对象?我需要获取可绘制对象的 9patch 填充,因为如果状态在 9patch 上有不同的填充,它将仅获得顶部可绘制对象的填充,并且我想为每个键手动设置填充(drawable.getPadding(rect)) . 过时的答案。 请检查 VinceStyling 的答案,以获得使用 SDK 29+ 的更好解决方案 没有没有公共API可以从状态获取可绘制对象。 StateListDrawable中有一些方法,但它们是@hide,带有注释“待定的API委员会”。 您可以通过反射来调用它们...但是您需要自行承担风险!!!。 (在未来的版本中可能会改变) 这些方法是: 获取StateDrawableIndex 获取状态可绘制 以下是如何进行(省略例外): int[] currentState = view.getDrawableState(); StateListDrawable stateListDrawable = (StateListDrawable)view.getBackground(); Method getStateDrawableIndex = StateListDrawable.class.getMethod("getStateDrawableIndex", int[].class); Method getStateDrawable = StateListDrawable.class.getMethod("getStateDrawable", int.class); int index = (int) getStateDrawableIndex.invoke(stateListDrawable,currentState); Drawable drawable = (Drawable) getStateDrawable.invoke(stateListDrawable,index); 现在这是无需反射即可获取特定可绘制对象的方法: StateListDrawable pressedDrawable = (StateListDrawable) this.mPressed; final int state = android.R.attr.state_pressed; final int index = pressedDrawable.findStateDrawableIndex(new int[]{state}); if (index >= 0) { Drawable drawable = pressedDrawable.getStateDrawable(index); if (drawable instanceof GradientDrawable) { ((GradientDrawable) drawable).setCornerRadius(mRoundConerRadius); } }

回答 2 投票 0

在jetpack compose中组织结构的最佳方式

我希望每张卡片都显示列表的名称和下面的附加文本。旁边是总金额。 结果是这样的: @可组合 有趣的ListOfItems(列表:列表){ 卡片( 修改...

回答 1 投票 0

具有透明度和标高的约束布局

我在 1 个约束布局中有 10 个 TextView。我想要实现的是让约束布局有一定的高度,使所有 10 个文本视图看起来基本上都在我的背景之上...

回答 2 投票 0

创建一个水平和垂直滚动的RecyclerView

在过去的几周里,我一直在学习使用 RecyclerView。我需要实现一个水平列表,即通过将设备切换为横向模式,如下所示: 我找到了最好的解决方案...

回答 3 投票 0

xml 预览在 android studio 中不起作用

在 Android Studio Dolphin | 2021.3.1 Patch 1,xml预览不适用于特定布局。有什么解决方案可以解决这个问题吗?请帮我解决问题。

回答 1 投票 0

如何在以编程方式滚动时禁用 tabLayout 滚动动画?

当活动开始时,我以编程方式更改选项卡布局的位置,但在以参数方式更改选项卡布局位置时,它会提供从第 0 个选项卡到我所在的选项卡的滚动动画

回答 2 投票 0

Android - Recyclerview mHasFixedSize 的默认值

我理解 mHasFixedSize 字段的概念,但是,我不确定它的默认值是什么(true 或 false)。我可以创建一个简单的 PoC 并进行测试,但是: 在这里找到答案可以帮助...

回答 1 投票 0

如何在android中实现垂直选项卡布局?

我正在尝试在平板电脑上运行的应用程序上实现垂直选项卡布局。我尝试将 TabLayout 的方向设置为垂直,但没有成功。 我正在尝试在平板电脑上运行的应用程序上实现垂直选项卡布局。我尝试将 TabLayout 的方向设置为垂直,但没有成功。 <?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"> <com.google.android.material.tabs.TabLayout android:id="@+id/staff_menu_tabs" android:layout_height="match_parent" android:layout_width="wrap_content" android:orientation="vertical" app:layout_constraintStart_toStartOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toTopOf="parent"> <com.google.android.material.tabs.TabItem android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Tab 1"/> <com.google.android.material.tabs.TabItem android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Tab 2"/> <com.google.android.material.tabs.TabItem android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Tab 3" /> </com.google.android.material.tabs.TabLayout> </androidx.constraintlayout.widget.ConstraintLayout> 我使用以下代码制作了垂直 tabLayout。 <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:rotation="-90" android:transformPivotX="0dp" android:layout_marginTop="@dimen/tab_width" android:layout_marginLeft="-24dp"> <com.google.android.material.tabs.TabLayout android:layout_width="@dimen/tab_width" android:layout_height="wrap_content" android:background="@color/black" app:tabTextColor="@color/light_grey" app:tabSelectedTextColor="@color/white" app:tabIndicatorHeight="2dp" app:tabIndicatorColor="@color/white" app:tabPaddingBottom="-10dp"> <com.google.android.material.tabs.TabItem android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ABC"/> <com.google.android.material.tabs.TabItem android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="XYZ"/> </com.google.android.material.tabs.TabLayout> </androidx.constraintlayout.widget.ConstraintLayout> 这是使用 Jetpack Compose 实现的 Vertical-TabLayout 库 https://github.com/mohdDanishCode/MDVerticalTabLayout

回答 2 投票 0

方向改变时保存scrollview的位置

这是我的布局: 当方向改变时我需要保存滚动位置。例如,如果屏幕在纵向模式下显示从中间名开始的布局,它应该从相同的开始......

回答 7 投票 0

如何将焦点从 RowsSupportFragment 的行移动到下一个布局组件?

我正在使用 Android Leanback 库来创建电视应用程序。我有一个扩展 Fragment (即 RowsSupportFragment)的布局,其下方有一个按钮。所以,当我向下滚动到 lis 时...

回答 3 投票 0

折叠工具栏布局的渲染问题

我有一个项目,其中一个片段使用折叠工具栏布局。 直到最近,一切都很好。但上次我在 Android Studio 中遇到了折叠工具栏渲染的问题

回答 1 投票 0

如何在Android日历视图中为日期添加自定义颜色?

目前,我正在开发一个用于考勤管理系统的Andriod应用程序。用于向用户显示特定日期的出席情况,无论他们是“出席”还是“缺席”,通过

回答 1 投票 0

将一个RecyclerView插入到另一个RecyclerView中

我正在创建一套 5 张卡片,其风格为 Google Now Cards。我首先关注总体布局。 我正在使用 CardView 和 RecyclerView,我想要实现的目标是......

回答 2 投票 0

Android 在运行时将数据加载到表格布局

在我的 Android 应用程序中,我必须在表格布局中显示从数据库获取的数据。我获取数据,当我将 TableRows 添加到表中时,它给出了一个空指针。我正确实例化了......中的元素

回答 1 投票 0

回收视图CardView长按删除

在我的应用程序中,我有一个recycleView,其中有许多cardView控件。我想允许用户长按时选择 cardView 控件。在此操作中,用户可以长按操作...

回答 2 投票 0

如何使文本右对齐?

我在一列中有两个文本,我希望第二个文本右对齐: 第一的 第二 我怎样才能做到这一点? 我尝试将第二个文本包装在 Ro 中...

回答 1 投票 0

以编程方式设置 android:windowIsTranslucent

按照本教程http://cases.azoft.com/android-tutorial-floating-activity/后,我能够创建浮动活动 但是,为此,我必须在 styles.xml 中添加这一行: 按照本教程后,我能够创建浮动活动http://cases.azoft.com/android-tutorial-floating-activity/ 但是,为此,我必须在 styles.xml 中添加这一行: <item name="android:windowIsTranslucent">true</item> 仅使用 Android/Java 代码是否可以达到相同的效果? (例如在 Activity.onAttachedToWindow() 左右...) 预先感谢您的帮助。 [编辑 01] styles.xml 不得更改(而且我不应该知道其中有什么......)。但出于测试目的,我使用默认的: <resources> <style name="AppBaseTheme" parent="Theme.AppCompat.Light"> </style> <style name="AppTheme" parent="AppBaseTheme"> </style> </resources> [编辑02]Resources.Theme.applyStyle()似乎做了我想做的事情(根据API描述:“将新属性值放入主题”)。 所以我创建了以下custom_style.xml: <resources> <style name="MyCustomStyle" > <item name="android:windowIsTranslucent">true</item> </style> </resources> 然后,在onAttachedToWindow(),我打电话: getTheme().applyStyle(R.style.MyCustomStyle, true); 但是没有任何效果... 仅使用Android/Java代码是否可以达到相同的效果? 恐怕不行。您只需在 styles.xml 内完成即可。据我所知 android:windowIsTranslucent 的值无法通过编程单独更改。 当我们调用 super.onCreate(savedInstanceState); 时,Activity 类提供了一个空的图形窗口,我们可以在其中设置内容,即视图。并将主题应用于该窗口,然后将内容加载到该视图上。 因此顺序将是, 致电super.onCreate() 设置活动主题。 设置该活动的内容视图。 例如。 styles.xml <style name="AppTheme" parent="AppBaseTheme"> <!-- All customizations that are NOT specific to a particular API-level can go here. --> <item name="android:windowBackground">@drawable/background</item> <item name="android:windowNoTitle">true</item> </style> <!-- Application theme.without title bar --> <style name="AppTheme.NoTitleBar" parent="AppBaseTheme"> <!-- All customizations that are NOT specific to a particular API-level can go here. --> <item name="android:windowBackground">@drawable/background</item> <item name="android:windowNoTitle">true</item> </style> <!--Floating activity theme --> <style name="Theme_Translucent" parent="android:style/Theme.NoTitleBar.Fullscreen"> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowFrame">@null</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <item name="android:windowFullscreen">true</item> </style> 然后为Floating activity设置主题,如下所示: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTheme(R.style.Theme_Translucent); // Set here setContentView(...) } 这样做 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window w = getWindow(); // in Activity's onCreate() for instance w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); } Android R 出现新方法 不能说要以编程方式执行此操作..但如果您需要执行此操作,您可以像这样尝试.. 将主题添加到清单文件中的活动中,如下所示.. android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" 示例:- <activity android:name="com.example.androidhackerphonelocker.MainActivity" android:label="@string/app_name" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 希望它能解决您的一些问题.. 也许这会有所帮助。 @Override protected void onCreate(Bundle savedInstanceState) { processSetTheme(this); getWindow().requestFeature(Window.FEATURE_NO_TITLE); getWindow().setBackgroundDrawableResource(R.color.realTranslucent); if (Build.VERSION.SDK_INT>=19){ getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); } super.onCreate(savedInstanceState); <color name="realTranslucent">#00000000</color> 如果 android.app.Dialog window.setDimAmount(0f) window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) 从 API 级别 30 开始,现在有一个 setTranslucent 方法: 将活动(尤其是具有 R.attr.windowIsTranslucent 或 R.attr.windowIsFloating 属性的活动)转换为全屏不透明活动,或将其从不透明转换回半透明。 文档

回答 7 投票 0

Android:ScrollView 无法在键盘退出时滚动

我有一个带有一些视图的布局,其中一个是 EditText。布局很容易适合一页,但是,当软键盘退出时,布局不会滚动。 这是我的布局的回顾: <...

回答 12 投票 0

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