小编Mar*_*il4的帖子

Android MVP模式包结构

我在android中看到了关于MVP模式的各种精彩教程,但作者们似乎都在包装上有不同的练习.

我看到的第一个教程按功能进行了打包.如,"登录","加入","UI"包.

UI包只有活动,"Login"包具有演示者和具体演示者的接口,并且该包包含子包"Model",其中包含有关登录模型的所有内容(与服务器的通信)."Join"包与"Login"包具有相同的组成.

但是我看到的另一个按场景打包,例如"加入","登录".

"Join"包中包含一个活动,以及三个名为"Model","View","Presenter"的子包.

什么是最佳做法?有没有处理这个问题的文章?

mvp android package

11
推荐指数
2
解决办法
4788
查看次数

Jetpack Compose 如何在 BasicTextField 内居中提示和输入

我正在尝试制作一个填充屏幕宽度的 editText,它的提示和输入从屏幕中心开始。

我选择BasicTextField,因为TextField 和OutlinedTextFields 的样式对我来说完全不需要。

我尝试过这样做。

      BasicTextField(
                value = loginId,
                onValueChange = {
                    loginId = it
                },
                decorationBox = {
                     Text(text = "Input your id", modifier = Modifier.align(Alignment.CenterHorizontally).fillMaxWidth())
                },
                modifier = Modifier
                    .fillMaxWidth()
                    .padding(start = 19.dp,
                        bottom = 4.5.dp, end = 19.dp, top = 40.dp)
                    .background(Purple200)
                    .align(Alignment.CenterHorizontally),
            )
Run Code Online (Sandbox Code Playgroud)

这没有效果。我能用这个做什么?

android android-jetpack-compose android-jetpack-compose-text

6
推荐指数
1
解决办法
6177
查看次数

Android如何强制默认屏幕密度

通过“设置/显示”放大屏幕,我发现我的 Galaxy s9+ 的屏幕密度从 430 dpi 变为超过 600 dpi。

这使得布局和图像从 xxhdpi 更改为 xxxhdpi。

如果我有一个固定大小为 16dp 的 textView,

在 xxhdpi 中它是 16 * 3 px,在 xxxhdpi 中将变成 16 * 4 px。

这使得我的布局(当然来自 editTexts 或 textViews 的文本)变得更大,因为设备的实际密度永远不会改变,谷歌(或制造商 samsumg)打算为此功能。

但我不希望这种情况发生在我的应用程序中。

我试图通过这样做来修复它;

Configuration configuration = activity.getResources().getConfiguration();

if (configuration.densityDpi != 430) { 
                configuration.densityDpi = 430;    
}

DisplayMetrics metrics = activity.getResources().getDisplayMetrics();
WindowManager wm = (WindowManager) activity.getSystemService(activity.WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(metrics);
metrics.scaledDensity = configuration.densityDpi * metrics.density;
activity.getResources().updateConfiguration(configuration, metrics);
Run Code Online (Sandbox Code Playgroud)

这迫使屏幕密度变为 430,并且在 Galaxy s9+ 上运行良好。但事实上,并非所有设备的默认密度都是 430。

如何确定运行我的应用程序的设备的默认密度?

或者是否有配置可以忽略我的应用程序的放大效果?

android android-layout screen-density

5
推荐指数
1
解决办法
4140
查看次数

Jetpack 撰写惰性列不与列表重新组合

我有一个存储在Viewmodelvia内的列表Stateflow

class FirstSettingViewModel : ViewModel() {

     private val _mRoomList = MutableStateFlow<List<InitRoom>>(mutableListOf())
     val mRoomList: StateFlow<List<InitRoom>> = _mRoomList
    
     ...
Run Code Online (Sandbox Code Playgroud)

我通过 观察流程collectAsState()。它LazyColumn由可以单击的框组成。

val roomList = mViewModel.mRoomList.collectAsState()

Dialog {

    ...

    LazyColumn(...) {

        items(roomList.value, key = { room -> room.room_seq}) { room ->
          
           Box(Modifier.clickable {
              **mViewModel.selectItem(room)**
           }) {...}
       }
    }
}
Run Code Online (Sandbox Code Playgroud)

当单击事件发生时,viewModel 通过复制列表更改“isSelected”值,如下所示。

fun selectItem(room: InitRoom) = viewModelScope.launch(Dispatchers.IO) {
    try {
        val cpy = mutableListOf<InitRoom>()
        mRoomList.value.forEach {
            cpy.add(it.copy())
        }
        cpy.forEach {
            it.isSelected = it.room_seq == room.room_seq
        } …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose kotlin-stateflow lazycolumn compose-recomposition

5
推荐指数
1
解决办法
1924
查看次数

Retrofit2如何解析带有内联标签的xml

我正在使用 Retrofit2 和简单的 xml 解析器将 xml 值解析为类。

但是,我从未遇到过这些内联(?)标签。api 返回一些内容,但响应正文为 null。

xml 如下所示。

<?xml version="1.0" encoding="ISO-8859-1"?>
<Book title="Title Name" ver="20190513001" coverimg="PPO01.jpg" bookcode="PPO01">
    <chapters count="1">
        <chapter endflag="000" thumbnail="PPO0101_TN.jpg" chaptercode="PPO0101" num="1">
        <chaptername>ChapterName</chaptername>

        <movies count="1">

            <movie num="1" name="Movie Name" url="Some Url" type="AR">
                <directions count="0"/>

            </movie>
        </movies>
    </chapter>
</chapters>
</Book>
Run Code Online (Sandbox Code Playgroud)

我对此的响应代码如下所示。

根对象。

@Root(name = "Book", strict = false)
public class XmlBook implements Serializable {

    @Element(name = "title")
    private String title;

    @Element(name = "ver")
    private String ver;

    @Element(name = "coverimg")
    private String coverimg;

    @Element(name = "bookcode") …
Run Code Online (Sandbox Code Playgroud)

android xml-parsing retrofit2

2
推荐指数
1
解决办法
1218
查看次数

Jetpack Compose Desktop 有没有办法向窗口添加高度?如何设置窗口的最小尺寸?

我在浏览 compose 桌面教程时遇到问题。

我有两个关于撰写桌面基础知识的问题。

首先,有没有办法为整个窗户添加标高?

其次,有没有办法设置窗口的最小尺寸? 当我单击窗口边缘时,即使没有显示任何箭头,也可以调整窗口大小,但我找不到对其最小尺寸添加约束的方法。它会闪烁直至消失。

我当前的预览如下所示。

在此输入图像描述

我的代码看起来像这样。

fun main() = application {

val windowState = rememberWindowState()
windowState.size = WindowSize(392.dp, 642.dp)

var isVisible by remember { mutableStateOf(true) }

val trayState = rememberTrayState()

Tray(
    state = trayState,
    icon = TrayIcon,
    hint = "PickMessengerV2",
    onAction = {
        isVisible = true
    },
    menu = {
        Item(
            "Exit",
            onClick = {
                exitApplication()
            }
        )
    }
)

Window(
    onCloseRequest = {
        isVisible = false
    },
    state = windowState,
    undecorated = true,
    resizable …
Run Code Online (Sandbox Code Playgroud)

kotlin-multiplatform android-jetpack-compose

1
推荐指数
1
解决办法
2267
查看次数