小编Hen*_*ste的帖子

展开持久性底部工作表时调整回收器视图高度

我有一个持久的底部工作表(基本上是一个按钮)和一个回收器视图,它们都包含在 CoordinatorLayout 中。

当底部工作表展开时,我不希望它遮挡回收站视图。我可以通过分别app:layout_insetEdge="bottom"在底部工作表和app:layout_dodgeInsetEdges="bottom"回收站视图中进行设置来实现这一点。

但是,由于回收器视图的高度设置为android:layout_height="match_parent",当底部工作表展开时,它的顶部部分移出屏幕。

相反,我希望回收器视图根据底部工作表的高度动态调整其高度,使其不再移出屏幕。我怎样才能做到这一点?

这是完整的布局:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<android.support.v7.widget.RecyclerView
    android:id="@+id/recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:nestedScrollingEnabled="false"
    app:layout_dodgeInsetEdges="bottom" />

<Button
    android:id="@+id/bottom_sheet"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/update_all"
    android:foreground="?attr/selectableItemBackground"
    android:background="@drawable/angled_button"
    app:behavior_hideable="false"
    app:behavior_peekHeight="0dp"
    app:layout_insetEdge="bottom"
    app:layout_behavior="android.support.design.widget.BottomSheetBehavior" />

</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

编辑:添加了截图

没有底片,一切看起来都很好。 在此处输入图片说明

随着底部工作表展开,回收站视图不再完全可见。 在此处输入图片说明

编辑 2:添加了 GIF

在此处输入图片说明

user-interface android material-design android-coordinatorlayout bottom-sheet

9
推荐指数
2
解决办法
5480
查看次数

带间距的多笔画

我想要一个带有两个笔画的按钮样式,它们之间有一些间距。我的第一种方法并不令人满意,因为在角落里笔画之间的间距是不同的:

灰色笔划应紧密围绕蓝色渐变,白色笔划的圆角半径应适合其他笔划。

这是我的代码:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item >
        <shape android:shape="rectangle">

            <padding android:left="2dp"
                android:top="2dp"
                android:right="2dp"
                android:bottom="2dp"/>

            <stroke
                android:width="1dp"
                android:color="#7F7F7F"/>

            <corners
                android:radius="6dp"/>
        </shape>
    </item>

    <item >
        <shape android:shape="rectangle">
            <padding android:left="2dp"
                android:top="2dp"
                android:right="2dp"
                android:bottom="2dp"/>

            <gradient
                android:startColor="@color/colorBlueLight"
                android:endColor="@color/colorBlueDark"
                android:angle="270"/>

            <corners
                android:radius="6dp" />
        </shape>
    </item>

    <item >
        <shape android:shape="rectangle">

            <padding android:left="2dp"
                android:top="2dp"
                android:right="2dp"
                android:bottom="2dp"/>

            <stroke
                android:width="2dp"
                android:color="#FFFFFF"/>

            <corners
                android:radius="6dp"/>
        </shape>
    </item>

</layer-list>
Run Code Online (Sandbox Code Playgroud)

java android android-layout android-view

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

不同类型的列表列表

我想将不同类型的列表添加到列表中.这是我的方法:

struct Column
{
    public string title;
    public List<dynamic> col;
}

var signals = new List<Column>();
signals.Add(new Column {title = "stringCol", col = new List<string>() });
signals.Add(new Column {title = "doubleCol", col = new List<double>() });
Run Code Online (Sandbox Code Playgroud)

它说List<string>无法转换为List<dynamic>.我也试过使用模板,但我没有运行它.

.net c# list

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

编译器选择错误的重载函数

我即将调整我的源代码到Qt中的新信号和插槽语法.虽然下面陈述的代码与不推荐使用的const char* signal参数运行良好,但它不适用于新QMetaMethod &signal语法.

class SignalWaiter : public QObject {
    Q_OBJECT
public:
    SignalWaiter(const QObject* sender, const QMetaMethod &signal);

private slots:
    void signalCaught();
};

SignalWaiter::SignalWaiter(const QObject* sender, const QMetaMethod &signal) {
    QObject::connect(sender, signal, this, &SignalWaiter::signalCaught);
}

void SignalWaiter::signalCaught() {
}
Run Code Online (Sandbox Code Playgroud)

编译器在connect()命令处停止并显示以下消息:

错误:C2664:'QMetaObject :: Connection QObject :: connect(const QObject*,const char*,const char*,Qt :: ConnectionType)const':无法将参数2从'const QMetaMethod'转换为'const char*'

没有可用于执行此转换的用户定义转换运算符,或者无法调用运算符

很明显,编译器尝试使用旧语法调用重载的connect方法.我究竟做错了什么?

c++ qt signals-slots

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