小编Dam*_*les的帖子

CoordinatorLayout填充剩余高度

对于 a CoordinatorLayout,如果它包含两个视图并且一个视图停靠在底部layout_gravity="bottom",我可以让另一个视图填充剩余高度吗?例如,如果屏幕高度为 1000dp,底部视图的高度为 300dp,则其他视图的高度应为 700dp。

这对于 a 来说很容易LinearLayout,但要使用底部工作表,我必须将 a 设置CoordinatorLayout为最上面的布局。我想知道是否有一种方法可以得到我想要的东西,而无需添加一个孩子LinearLayout来包装两个视图。

android android-coordinatorlayout

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

我必须使用 lambda 将成员函数作为 std::function 传递吗?

以下代码有效,但我觉得该行worker([this](int a, long b, int* c){receiver(a, b, c);});有点多余,因为它重复了receiver. 我可以以某种方式直接传递成员函数,而不是传递一个 lambda 函数来调用成员函数吗?

using callback = std::function<void(int, long, int*)>;

void worker(callback c)
{
    c(1,2L,(int*)3);
}

class Caller
{
public:
    Caller()
    {
        worker([this](int a, long b, int* c){receiver(a, b, c);});
    }

    void receiver(int a, long b, int* c)
    {
    }
};
Run Code Online (Sandbox Code Playgroud)

c++ std-function

5
推荐指数
2
解决办法
1197
查看次数

System.Text.Json:如何像常规类一样序列化 IEnumerable?

似乎如果一个对象是 an IEnumerable,Json 会忽略它的字段并序列化可枚举。例如,对于如下所示的类,Title未序列化。我发现了几乎相同的问题,答案是添加[JsonObject]到类中,但它是关于使用 Newtonsoft.Json 的,我正在通过 .NET 7.0 的 Json 使用JsonResult。.NET Json 有等效的东西吗?

        var myBook = new Book()
        {
            Title = "Jane Eyre",
            Pages = new List<string>() { "page1", "page2", "page3" }
        };
        var options = new JsonSerializerOptions { IncludeFields = true };
        return new JsonResult(myBook, options);
    }

    public class Book:IEnumerable<string>
    {
        public string Title;
        public IList<string> Pages;

        public IEnumerator<string> GetEnumerator()
        {
            return Pages.GetEnumerator();
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            return Pages.GetEnumerator() as …
Run Code Online (Sandbox Code Playgroud)

.net system.text.json

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

WinForms标签内的超链接

例如,记事本的"关于"对话框仅将"Microsoft软件许可条款"作为超链接,但文本的其余部分不是.如何使用WinForms的Label(或标签)获得类似的结果?

我可以使用两个标签,一个Label和另一个LinkLabel,但是这两个标签不会自然连接(标签的宽度可能因系统字体或语言而异).

在此输入图像描述

c# label winforms

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

当 RecyclerView 在 Dialog 上时不显示分隔线

我对 Fragment 中的 RecyclerView 和Dialog.

    myAdapter = MyAdapter();
    var lm = LinearLayoutManager(this.context)
    myRecyclerView.layoutManager = lm;
    myRecyclerView.adapter = myAdapter;
    var line = DividerItemDecoration(this.context, lm.orientation);
    myRecyclerView.addItemDecoration(line);
Run Code Online (Sandbox Code Playgroud)

奇怪的是,分隔线显示在片段中,但未显示在对话框中。这是一个已知问题吗?还是我做错了什么?我只是想显示项目之间的内置黑线分隔线。

我在自定义对话框的构造函数中调用了上面的代码。

class MyDialogue:Dialog
{
    constructor(context: Context?) : super(context)
    {
        setContentView(R.layout.my_dialogue);
        window.setLayout(
                ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

        //That code above.
    }
Run Code Online (Sandbox Code Playgroud)

补充:似乎默认行正在使用android.R.attr.listDivider. 我只是不明白为什么 RecyclerView 没有在对话框中得到它。作为一种解决方法,我手动将 drawable 设置为装饰器,现在我可以看到默认分隔符。代码如下。但我为什么要这样做呢?

val a = context!!.theme.obtainStyledAttributes(
               R.style.AppTheme, intArrayOf(android.R.attr.listDivider));
val attributeResourceId = a.getResourceId(0, 0)
val drawable = context.getDrawable(attributeResourceId)
line.setDrawable(drawable);
a.recycle();
Run Code Online (Sandbox Code Playgroud)

android android-dialog android-recyclerview

4
推荐指数
2
解决办法
1299
查看次数

Java,我可以将任意接口应用于现有类吗?

如果两个类有一些签名完全相同的方法,但这些方法没有被继承,有没有办法用公共方法定义一个接口,并使用相同的接口指向两个类的两个实例?

例如,假设一类Cat具有boolean isAlive()与另一个类Dog具有boolean isAlive()CatDog具有比其它没有共同的祖先Objectboolean isAlive()不是继承的方法。我不能修改Cat或者Dog因为它们是别人写的。我可以随意创建一个这样的界面并用它来指向猫或狗吗?

interface lovable
{
    boolean isAlive();
}

void main()
{
    lovable thing = new Cat(); <-- any syntax to achieve this?
    love(thing);
}

void love(lovable thing)
{
    if (thing.isAlive())
        System.out.println("Aww.");
    else
        System.out.println("Eww.");
}
Run Code Online (Sandbox Code Playgroud)

java interface

3
推荐指数
2
解决办法
3238
查看次数

隐藏iPhone模拟器边框(非屏幕区域)?

无用的顶部和底部边框(黑色区域)太粗。有什么办法可以使它们更薄吗?我希望主页/电源按钮显示一些小按钮,但这太大了。

在此处输入图片说明

ios-simulator

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

Blazor:单击按钮时调用服务器方法?

我创建了一个示例 Blazor 项目。该脚手架有两个示例,(1) 调用网页中存在的 C# 方法 = 计数器,(2) 在网页初始化开始时调用服务器方法 = 天气表。但没有任何调用服务器方法并在单击按钮时获取结果的示例。那可能吗?

例如,我可以将这样的方法添加到“WeathrForecastService.cs”中:

    public int Add(int a, int b)
    {
        return a + b;
    }
Run Code Online (Sandbox Code Playgroud)

与“计数器”示例一样,在页面上添加一个按钮,当单击该按钮时,显示其结果:

@page "/fetchdata"

@using BlazorApp1.Data
@inject WeatherForecastService ForecastService

<h1>Weather forecast</h1>

<p>This component demonstrates fetching data from a service.</p>

@if (forecasts == null)
{
    <p><em>Loading...</em></p>
}
else
{
    <p>Current count: @[display the result of ForecastService.Add(1,2)]</p>
    <button class="btn btn-primary" @onclick="[call ForecastService.Add(1,2)]">Click me</button>
}

@code {
    WeatherForecast[] forecasts;

    protected override async Task OnInitializedAsync()
    {
        forecasts = await ForecastService.GetForecastAsync(DateTime.Now);
    } …
Run Code Online (Sandbox Code Playgroud)

asp.net-core blazor

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

JavaScript,字符串分割,数字(可以是浮点数)和字符串

例如,x在以下示例中如何获取“1.2”和“kg”?目前,我得到“”、“1.”和“kg”。

function split()
{
    var data = "1.2kg";
    var x = data.split(/([0-9]*[.])?[0-9]+/);
}
Run Code Online (Sandbox Code Playgroud)

javascript

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

“颤动创建”是怎么来的。添加桌面支持?

我在 Android Studio 中创建了一个 Flutter 项目,后来发现 Flutter 支持桌面。在网上搜索之后,我做了一些事情,比如切换到“开发”,添加桌面配置等。但是当我尝试运行它时,即使我启用了配置,我也得到“没有配置 Windows 桌面项目”。

文档页面

要将桌面支持添加到现有 Flutter 项目,请从项目根目录在终端中运行以下命令:

flutter create .
Run Code Online (Sandbox Code Playgroud)

这会将必要的桌面文件和目录添加到您现有的 Flutter 项目中。

但是什么意思.呢?为什么这.意味着“添加桌面支持”?

flutter flutter-desktop

3
推荐指数
2
解决办法
1029
查看次数