小编bam*_*bam的帖子

如何在Google日历应用中使用Android对话框(全屏,嵌入式)

我想要实现的目标

谷歌在其日历应用中实施的小/大屏幕行为.

例如,当您创建新事件时,在大屏幕上会打开"对话框"

  1. 这会使背景中的活动变暗
  2. 工具栏始终位于同一位置,并且永远不会被屏幕键盘推出视图
  3. 在纵向模式下,对话框工具栏的底部与活动的"扩展"工具栏的底部对齐.

    工具栏对齐w /活动工具栏

    上下文操作栏(例如用于文本选择)是在活动的工具栏上绘制的,并向下推动对话框,因此它不再与活动的工具栏相关联.

  4. 在横向模式下,它似乎固定在通知栏下方; 上下文操作栏是在活动的工具栏上绘制的

    上下文操作栏:左侧横向,右侧纵向

在小屏幕上

  1. 对话框填满了屏幕
  2. 上下文操作栏通过工具栏绘制

到目前为止我尝试过的

A.从android文档中全屏显示DialogFragment示例(不能再添加缺少声誉的b/c链接)

  • 当显示为全屏对话框时,背景是透明的,它会在通知栏上绘制(类似于沉浸式模式)

B.添加(感谢stackoverflow上的一些帖子)

  • 对话框片段样式:

    setStyle(DialogFragment.STYLE_NORMAL, R.style.MyDialogFragmentStyle);
    
    <style name="MyDialogFragmentStyle" parent="@style/MyTheme">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowFullscreen">false</item>
        <item name="android:windowIsFloating">false</item>
    </style>
    
    Run Code Online (Sandbox Code Playgroud)
  • 删除了窗口标题

    getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
    
    Run Code Online (Sandbox Code Playgroud)
  • 添加了自定义工具栏

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout 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.Toolbar
         android:id="@+id/toolbar"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:background="?attr/colorPrimary"
         android:minHeight="?attr/actionBarSize"
         app:homeAsUpIndicator="@drawable/ic_arrow_back_white_24dp"
         app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
    
      <FrameLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/toolbar" >
      </FrameLayout>
    
    </RelativeLayout>
    
    Run Code Online (Sandbox Code Playgroud)
  • 并在小型设备上将对话框设置为全屏

    dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
    
    Run Code Online (Sandbox Code Playgroud)

这有点工作,它解决了我想要达到的一些要点和A.'Android样本'问题(透明背景,...)

  1. 使背景中的活动变暗

    • 作品
  2. 工具栏始终位于同一位置,并且永远不会被屏幕键盘推出视图

    • 有点,除了工具栏被屏幕键盘推出屏幕外
  3. 在纵向模式下,对话框工具栏的底部与Activity的"扩展/大"工具栏的底部对齐.上下文操作栏(例如用于文本选择)是在活动的工具栏上绘制的,并向下推动对话框,因此它不再与活动的工具栏相关联.

    • nope,没有付出任何努力来对齐b/c 2.上下文操作栏是在Activity的工具栏上绘制的,并且是对话框工具栏的一部分.
  4. 在横向模式下,它似乎固定在通知栏下方; 上下文操作栏是在活动的工具栏上绘制的.

    • 不,屏幕上的键盘按下工具栏从屏幕和上下文动作栏上绘制活动的工具栏,也超过了对话的一部分(B/C对话框的工具栏被外推 - …

android screen-size dialogfragment

10
推荐指数
0
解决办法
786
查看次数

从方法非确定性行为返回std :: string?

我有一个读取文件并将其内容作为a返回的方法std::string.我使用return std::string来编译OpenGL程序.在某些情况下,由于一个或两个着色器部分(读取文件内容),链接失败(编译的顶点着色器已损坏.)NULL.

  • 如果我一步一步调试我的代码一切都很好.
  • 如果我打印文件内容,链接似乎失败的次数较少.

为什么它表现不同,哪里是我的错?

cout在年底始终打印正确的文件内容:

std::string read_file(const char* filePath) {
    std::string content;
    std::ifstream stream(filePath, std::ios::in);
    if (stream.is_open()) {
        std::string line = "";
        while(getline(stream, line)) {
            content += "\n" + line;
        }
    }
    std::cout << "read_file " << content << "end read_file" << std::endl; // always prints the correct content

    return content; // makes a copy, don't like that, unless RVO?..
}
Run Code Online (Sandbox Code Playgroud)

fragmentSource和或vertextSource有时是空的:

    GLuint fragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER);
    GLuint vertexShaderID …
Run Code Online (Sandbox Code Playgroud)

c++ opengl

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

标签 统计

android ×1

c++ ×1

dialogfragment ×1

opengl ×1

screen-size ×1