布局标记用于关于对象相对于包含元素的放置,对齐和对齐的问题。有关CSS的问题,请改用“css”标签。
React原生android fitSystemWindows不生效
android 的react-native 中是否有 fitSystemWindows() 的替代方案? 我的用例如下:我使用半透明状态栏标志在状态栏下绘制,在这种情况下键盘调整大小...
我正在尝试复制 YouTube 教程中的网站设计。这是目标布局: ...这是我的样子: 主要问题是图标和导航栏的定位。好像
我做了宽度1280px的布局(使用flex)。但事实证明,它将显示的屏幕只有 960px 的浏览器宽度(以及 1280px 的操作系统屏幕宽度,具有一些分数像素比) 做...
如何在 Android Activity 中使可滚动布局后面跟着另一个布局(第二部分)
这是如何在 Android Activity 中使可滚动布局后面跟着另一个布局的延续 我使用了 Finn Marquardt 提出的解决方案。 与预期相比
如何在 Flutter 中将 PNG 图像分层到背景颜色上?
我想在 Flutter 中在纯色背景色之上显示 PNG 图像。我想要的结果如下所示: 目前,我的代码呈现如下: : 这是我正在使用的相关代码: 洛班...
我正在尝试在 Flutter 布局中的特定 X/Y 坐标处覆盖文本。这就是我想要实现的目标: 目前,我的布局如下所示: 我希望文本位于 X: 39 和 Y: 82...
我正在尝试将我创建的一些栅格数据导出为 .svg 文件格式,但所有栅格图层的最终结果都是模糊的。要素图层的边界清晰。我有这个...
我在 list_song.xml 文件上有一个 CardView,例如: 我在 CardView 文件上有一个 list_song.xml,例如: <?xml version="1.0" encoding="utf-8"?> <androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:background="@drawable/mxhbg" android:layout_marginTop="8dp"> <RelativeLayout android:id="@+id/txtitemsong" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/listsongbg" android:padding="8dp"> <ImageView android:id="@+id/imgmusic" android:layout_width="40dp" android:layout_height="40dp" android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_marginStart="5dp" android:layout_marginTop="5dp" android:background="@drawable/listsongbg" android:src="@drawable/ic_music" /> <TextView android:id="@+id/txtsongname" android:layout_width="wrap_content" android:layout_height="40dp" android:layout_alignParentEnd="true" android:layout_marginStart="5dp" android:layout_marginEnd="5dp" android:layout_toEndOf="@+id/imgmusic" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:padding="6dp" android:scrollHorizontally="true" android:singleLine="true" android:text="Name" android:textColor="#ffff" android:textSize="15sp" /> </RelativeLayout> </androidx.cardview.widget.CardView> 我使用 BaseAdapter 绑定在我的 Activity 上: public class PlaylistAdapter extends BaseAdapter { @Override public int getCount() { return songsList.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = getLayoutInflater().inflate(R.layout.list_song, parent, false); RelativeLayout txtitemsong = view.findViewById(R.id.txtitemsong); if (position < 2 || position > 5) { txtitemsong.setVisibility(View.GONE); } return view; } } 由于一些限制(在本例中为 2/5),我想完全隐藏一些垂直堆叠的 txtitemsong 项目。 但是一旦我用 txtitemsong.setVisibility(View.GONE) 隐藏它,似乎每个 txtitemsong 的边距都被保留(因此显示项目上方/下方有很多空间)。 如何隐藏整个txtitemsong堆叠的项目? 我可以将android:layout_marginTop="0dp"设置为CardView,但似乎没有效果。直接在 android:layout_marginTop="0dp" 上使用相同的 txtitemsong,没有任何变化。 原图如下: 这就是 txtItemSong.setVisibility(View.GONE) 隐藏前 2 项和最后一项的视图: 您可以看到,在项目列表开始之前,顶部有边距/填充。 如果我隐藏 CardView 并且我这样做: if (position < 2 || position > 5) { txtItemSong.setVisibility(View.GONE); ViewGroup.LayoutParams params = txtItemSong.getLayoutParams(); params.height = 0; txtItemSong.setLayoutParams(params); } 这是结果(甚至很奇怪): 尝试使用以下代码 public class PlaylistAdapter extends BaseAdapter { private Context context; private ArrayList<String> items; public PlaylistAdapter(Context context, ArrayList<String> items) { this.context = context; this.items = filterItems(items); } private ArrayList<String> filterItems(ArrayList<String> originalItems) { ArrayList<String> filteredItems = new ArrayList<>(); for (int i = 2; i <= 5 && i < originalItems.size(); i++) { filteredItems.add(originalItems.get(i)); } return filteredItems; } @Override public int getCount() { return items.size(); } @Override public Object getItem(int position) { return items.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = getLayoutInflater().inflate(R.layout.list_song, parent, false); CardView cardView = view.findViewById(R.id.cardview); //use this incase filterItems doesn't works // if (position < 2 || position > 5) { // cardView.setVisibility(View.GONE); // cardView.setPadding(0, 0, 0, 0); // cardView.setLayoutParams(new LinearLayout.LayoutParams(0, 0)); // } return view; } } 一个名为 filterItems() 的新方法,它获取原始项目列表并返回包含索引 2 到 5(含)的项目的过滤列表。 更多建议参考链接 Android设置View.GONE不会“释放”listview中的空间
我正在尝试在 Flutter 中构建一个简单的登录 UI,如下所示: 目前,我的设计如下: 这是我的代码: 类 LogInEnterEmailPassword 扩展 StatefulWidget { const LogInEnterEmailPa...
我正在 Flutter 中构建一个登录屏幕,并希望将下划线(“___________”)替换为用户可以输入电子邮件和密码的字段。这是一个视觉表示: 德西...
我传递的容器颜色没有包裹MediumTopAppBar的标题
这是它的样子 脚手架( 顶部栏 = { 中顶部应用栏( 颜色 = TopAppBarDefaults.mediumTopAppBarColors( 容器颜色 = Color.Yell...
为什么我的Android自定义KeyboardView在设置新键盘后会溢出?
我正在开发Android键盘。现在我想将键盘从字母更改为符号,然后用户按“123”按钮。 我的问题是,调用后键盘溢出
如何在 Flutter 中的“POMODONE”下方添加文字?
我正在尝试修改我的 Flutter 布局以在“POMODONE”文本下方显示另一段文本。这是我想要实现的目标的视觉表示: 目前,我的布局看起来...
我试图在同一行中获取三个 div,作为它们下面以文本为中心的三个图像的标题。我可以左右移动去工作,但是中间的那个不行……
如何在不同的 Activity 中的工具栏上添加不同的按钮?
这是我的activity_main.xml,它有一个基本的工具栏和右侧的两个按钮(以及一个导航视图): 这是我的 activity_main.xml,它有一个基本的 Toolbar 和右侧的两个 Button(还有一个 NavigationView): <?xml version="1.0" encoding="utf-8"?> <androidx.drawerlayout.widget.DrawerLayout 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" android:background="@drawable/mxhbg" android:id="@+id/drawer_layout" android:fitsSystemWindows="true" tools:context="com.myapp.MainActivity" tools:openDrawer="start"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/mxhbg" android:orientation="vertical" android:keepScreenOn="true" android:weightSum="10"> <LinearLayout android:layout_width="match_parent" android:layout_height="54dp" android:orientation="horizontal"> <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/colorPrimary" android:elevation="4dp" android:popupTheme="@style/ThemeOverlay.AppCompat.Light" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <Button android:id="@+id/btnRandom" android:layout_width="30dp" android:layout_height="30dp" android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:layout_gravity="end" android:layout_marginEnd="16dp" android:background="@drawable/ic_shuffle"> </Button> <Button android:id="@+id/btnRescanSongs" android:layout_width="30dp" android:layout_height="30dp" android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:layout_gravity="end" android:layout_marginEnd="16dp" android:background="@android:drawable/stat_notify_sync"> </Button> </androidx.appcompat.widget.Toolbar> </LinearLayout> // other stuff </LinearLayout> <com.google.android.material.navigation.NavigationView android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:id="@+id/nav_view" app:headerLayout="@layout/nav_header" app:menu="@menu/drawer_menu"> </com.google.android.material.navigation.NavigationView> </androidx.drawerlayout.widget.DrawerLayout> 我这样在MainActivity上设置它: setContentView(R.layout.activity_main); toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); 现在,在另一个 Activity (SyncActivity) 上,我想显示相同的 Toolbar,但右侧有不同的图标。 正确的做法是什么? 在activity_sync.xml上执行此操作: <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.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" android:background="@drawable/mxhbg" tools:context=".SyncActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/mxhbg" android:orientation="vertical" android:keepScreenOn="true" android:weightSum="10"> <LinearLayout android:layout_width="match_parent" android:layout_height="54dp" android:orientation="horizontal"> <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/colorPrimary" android:elevation="4dp" android:popupTheme="@style/ThemeOverlay.AppCompat.Light" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <Button android:id="@+id/btnRescanSongs" android:layout_width="30dp" android:layout_height="30dp" android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:layout_gravity="end" android:layout_marginEnd="16dp" android:background="@android:drawable/stat_notify_sync"> </Button> </androidx.appcompat.widget.Toolbar> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="9"> <ListView android:id="@+id/log" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="@android:color/transparent" android:dividerHeight="10.0sp" android:padding="8dp"> </ListView> </LinearLayout> </LinearLayout> </androidx.constraintlayout.widget.ConstraintLayout> 以及 SyncActivity: setContentView(R.layout.activity_sync); Objects.requireNonNull(getSupportActionBar()).setTitle("Sync"); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); 它在主要的下方添加了一个新的 Toolbar。 另外:为什么主Toolbar上的图标没有显示在其他活动上?看来是把他们藏起来了?为什么? 您可以从布局 xml 中删除所有工具栏按钮并将它们移动到菜单 xml 中。 文件:res/menu/yourmenuname.xml <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/menu_rescan_songs" android:icon="@android:drawable/stat_notify_sync" android:title="@string/menu_rescan_songs" app:showAsAction="always"/> </menu> 请注意,您还必须提供标题,而不仅仅是图标,您可以使用 showAsAction 与 always 来始终显示图标,或者 ifRoom 或 ifRoom|withText 只是尝试您最喜欢的内容。 然后你覆盖这个函数并加载你的菜单 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.yourmenuname,menu); return super.onCreateOptionsMenu(menu); } 要处理菜单操作,请使用: @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle item selection switch (item.getItemId()) { case R.id.menu_rescan_songs: doSomething(); return true; // case R.id.action_settings: // in case you need an extra button on // startSettings(); // on this activity // return true; default: return super.onOptionsItemSelected(item); } } 您可以使用菜单做很多事情,在这里添加一些链接可以帮助您继续阅读它们: https://developer.android.com/guide/topics/resources/menu-resource https://developer.android.com/guide/fragments/appbar
如何使用 DIV 对 Flexbox 项目进行分组,但不影响布局,就好像 DIV 不存在一样?
我在 Flexbox 容器中有多个项目,我已经实现了所需的布局行为(考虑到 .tool-body 可以动态隐藏/显示)。 以下html: 我在 Flexbox 容器中有多个项目,我已经实现了所需的布局行为(考虑到 .tool-body 可以动态隐藏/显示)。 以下html: <div class="root"> <div class="toolbar">toolbar1</div> <div class="tool-body">body1</div> <div class="toolbar">toolbar2</div> <div class="tool-body">body2</div> <div class="toolbar">toolbar3</div> <div class="tool-body">body3</div> </div> 使用CSS: .root { display: flex; flex-direction: column; height: 100%; width: 100%; } .tool-body { flex: 1 1 100%; } 现在,出于应用程序逻辑的目的,我想用 <div> 包装这些项目,以便在应用程序的其他方面拥有更简单的逻辑,例如: 键盘、鼠标事件(冒泡) $(".my-group").mousemove(...) //...enter/leave jQuery DOM 遍历用例 $(this).closest(".my-group")... //more chained calls 基于嵌套元素焦点的css .my-group:has(:focus) { /* background/border stuff*/ } 所以,我希望 html 看起来像这样: <div class="root"> <div class="my-group"> <div class="toolbar">toolbar1</div> <div class="tool-body">body1</div> </div> <div class="my-group"> <div class="toolbar">toolbar2</div> <div class="tool-body">body2</div> </div> <div class="my-group"> <div class="toolbar">toolbar3</div> <div class="tool-body">body3</div> </div> </div> ...加上额外的 css .my-group: .my-group { display: flex; flex-direction: column; flex: 1 0 auto; /* tried-out many combinations of grow/shrink/basis */ } 但是现在,布局行为不一样了,因为容器现在 .root 容器有 3 个项目,它们本身就是嵌套的 Flex 容器。 我知道 Flex 通过容器工作,因为父元素有一些定义的方向,直接子元素是根据其 flex-(grow|shrink|basis) 进行布局计算的项目。 我不确定是否有可能给出 html 结构,但该布局的行为就好像 <div class="my-group"> 根本不存在一样。 正如我所说,这个额外的 div 包装是为了简化其他方面,如果我不能这样做,其他方面往往会变得非常复杂。 这里是 JSFIDDLE,它并排演示了我的示例: https://jsfiddle.net/tqrn1z0s/4/ 鉴于: 可能有 1 到 4 个这样的 .my-groups 布局行为应该是这样的 当显示所有 .tool-body-es 时,垂直空间应为每个 .my-group 均匀分配 当某些 .tool-body-es 被隐藏时,显示其相应的 .toolbar,其余垂直空间均匀分布在显示的其他空间中。 问题: 如何实现第二个 html 的布局行为以充当第一个 html。 是否可以告诉浏览器以下内容:出于布局目的,假装<div class="my-group">不存在 还有其他解决方法吗? 要让浏览器忽略 .my-group,那么您可以在其上使用 display: contents(请参阅有关 css 技巧的解释)。它基本上使 .my-group 的孩子看起来就像是 .root 的孩子。使用它有一些注意事项(请参阅caniuse.com),但如果您超出了这些限制,那么您应该很好。 .root { display: flex; flex-direction: column; height: 100%; width: 100%; } .tool-body { flex: 1 1 100%; } .my-group { display: contents; } <div class="root"> <div class="my-group"> <div class="toolbar">toolbar1</div> <div class="tool-body">body1</div> </div> <div class="my-group"> <div class="toolbar">toolbar2</div> <div class="tool-body">body2</div> </div> <div class="my-group"> <div class="toolbar">toolbar3</div> <div class="tool-body">body3</div> </div> </div>
如何在 Flutter 中的主 AppBar 下方添加第二个 AppBar?
我的目标是创建一个 Flutter 布局,其中两个 AppBar 彼此堆叠,类似于此设计: 目前,我的布局如下所示: 我的代码: HomePageTimerUI 类扩展了无状态...
如何修复 Flutter 中的“RenderObject 无限大小”布局错误?
我在 Flutter 布局中遇到以下错误: ======== 渲染库捕获异常====================================== ================ 抛出以下断言...
我对 HTML、CSS 还很陌生,我想知道这个布局是否可以实现这个布局。 我想要的结果 我尝试过使用 shape-outside 属性。但结果已经出来了...
如何在 Flutter 中均匀分布 RichText Widget 中的图标和文本?
我正在使用 Dart 开发 Flutter 应用程序,并且遇到了特定的 UI 设计挑战。我的目标是实现一种布局,其中图标和文本在 RichText 小部件中均匀分布。 ...