小编Mar*_*tin的帖子

全宽导航抽屉

我想创建一个全宽导航抽屉.设置layout_widthmatch_parenton @+id/left_drawer的宽度约为屏幕空间的80%.这似乎是标准行为.我一定要重写onMeasure()DrawerLayout

我目前的代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/black"
        android:id="@+id/mainFragmentContainer">
    </FrameLayout>

    <include
        android:id="@+id/left_drawer"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        layout="@layout/drawer"/>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

谢谢.

android android-layout navigation-drawer drawerlayout

34
推荐指数
5
解决办法
4万
查看次数

OpenGL:glGetError()在调用glewInit()后返回无效的枚举

我使用GLEW和freeglut.出于某种原因,在调用glewInit()之后,glGetError()返回错误代码1280,即使使用glewExperimental = GL_FALSE也是如此.

我无法编译着色器,glGetProgramInfoLog()返回"在调用glLinkProgram()之前未成功编译顶点着色器.链接失败." 之前我能够编译着色器.

重新安装驱动程序没有帮助.

这是我的代码:

int main(int argc, char* argv[])
{
    GLenum GlewInitResult, res;

    InitWindow(argc, argv);

    res = glGetError(); // res = 0

    glewExperimental = GL_TRUE;
    GlewInitResult = glewInit();    

    fprintf(stdout, "ERROR: %s\n", glewGetErrorString(GlewInitResult)); // "No error"
    res = glGetError(); // res = 1280

    glutMainLoop();

    exit(EXIT_SUCCESS);
}

void InitWindow(int argc, char* argv[])
{
    glutInit(&argc, argv);

    glutInitContextVersion(4, 0);
    glutInitContextFlags(GLUT_FORWARD_COMPATIBLE);
    glutInitContextProfile(GLUT_CORE_PROFILE);

    glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE,
    GLUT_ACTION_GLUTMAINLOOP_RETURNS);

    glutInitWindowPosition(0, 0);
    glutInitWindowSize(CurrentWidth, CurrentHeight);
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);

    WindowHandle = glutCreateWindow(WINDOW_TITLE);

    GLenum errorCheckValue = glGetError();

    if (WindowHandle …
Run Code Online (Sandbox Code Playgroud)

c++ opengl glew freeglut

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

如何在Angular的组件测试中模拟提供的服务中的HttpClient?

假设我有一个使用HttpClient的服务,

@Injectable()
export class MyService {
  constructor(protected httpClient: HttpClient) { .. }
}
Run Code Online (Sandbox Code Playgroud)

然后是一个使用此服务的组件.

@Component({
  selector: 'my-component'
})

export class SendSmsComponent {
  constructor(private MyService) { .. }
}
Run Code Online (Sandbox Code Playgroud)

如何在模拟HttpClient而不是整个服务的同时测试这个组件?

TestBed.configureTestingModule({
  declarations: [MyComponent],
  providers: [
    { provide: MyService, useClass: MyService } // ?
  ]
}).compileComponents();

httpMock = TestBed.get(HttpTestingController); // ?
Run Code Online (Sandbox Code Playgroud)

unit-testing angular

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

WPF - 将UserControl的可见性绑定到属性

我有一个绑定到ObservableCollection的ListView.数据从Internet加载,然后添加到集合中.下载需要几秒钟,我想指示用户数据正在加载.

我创建了一个指示活动的UserControl.我将它放在ControlTemplate中.

<ControlTemplate x:Key="ListViewControlTemplate1" TargetType="{x:Type ListView}">
    <Grid>
        <local:ActivityIndicatorControl 
            HorizontalAlignment="Center" 
            Height="Auto" 
            Margin="0" 
            VerticalAlignment="Center"/>
    </Grid>
</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)

我想将Visibility绑定ActivityIndicatorControl到一个属性,让我们说bool IsLoading并相应地将它设置为Visible/Collapsed.

谢谢!

c# wpf xaml binding controltemplate

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

boost :: filesystem :: path和fopen()

我尝试这样做时出错:

path p = "somepath";
FILE* file = fopen(p.c_str(), "r");
Run Code Online (Sandbox Code Playgroud)

我明白了:

"const boost :: filesystem :: path :: value_type*"类型的参数与"const char*"类型的参数不兼容

谁能告诉我我做错了什么?谢谢

c++ windows fopen std boost-filesystem

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

实现 ControlValueAccessor 和 Validator 的 MatFormFieldControl 创建循环依赖

我正在尝试通过实现 MatFormFieldControl、ControlValueAccessor 和 Validator 接口来创建自定义表单控件。

但是,当我提供NG_VALUE_ACCESSORNG_VALIDATORS...

@Component({
  selector: 'fe-phone-number-input',
  templateUrl: './phone-number-input.component.html',
  styleUrls: ['./phone-number-input.component.scss'],
  providers: [
    {
      provide: MatFormFieldControl,
      useExisting: forwardRef(() => PhoneNumberInputComponent)
    },
    {
      provide: NG_VALUE_ACCESSOR,
      useExisting: forwardRef(() => PhoneNumberInputComponent),
      multi: true,
    },
    {
      provide: NG_VALIDATORS,
      useExisting: forwardRef(() => PhoneNumberInputComponent),
      multi: true
    }
  ]
})
export class PhoneNumberInputComponent implements MatFormFieldControl<string>,
  ControlValueAccessor, Validator, OnDestroy {
  ...
}
Run Code Online (Sandbox Code Playgroud)

创建循环依赖:

未捕获的错误:模板解析错误:无法实例化循环依赖!控件

这有效:

@Component({
  selector: 'fe-phone-number-input',
  templateUrl: './phone-number-input.component.html',
  styleUrls: ['./phone-number-input.component.scss'],
  providers: [
    {
      provide: MatFormFieldControl,
      useExisting: forwardRef(() => PhoneNumberInputComponent)
    } …
Run Code Online (Sandbox Code Playgroud)

typescript angular-material angular-components angular angular5

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

对ObservableCollection项的异步更新

我是多线程和WPF的新手.

我有一个ObservableCollection<RSSFeed>,在app启动项目从UI线程添加到此集合.RSSFeed的属性绑定到WPF ListView.后来,我想异步更新每个RSSFeed.所以我正在考虑实现类似的东西RSSFeed.FetchAsync()并在其更新的属性上提升PropertyChanged.

我知道ObservableCollection不支持来自UI线程以外的线程的更新,它会抛出NotSupportedException.但是因为我没有操纵ObservableCollection本身而是更新其项目的属性,我可以期待这个工作并看到ListView项目更新吗?或者由于PropertyChanged它会抛出异常吗?

编辑:代码

RSSFeed.cs

public class RSSFeed
{
    public String Title { get; set; }
    public String Summary { get; set; }
    public String Uri { get; set; }        
    public String Encoding { get; set; }
    public List<FeedItem> Posts { get; set; }
    public bool FetchedSuccessfully { get; protected set; }        

    public RSSFeed()
    {
        Posts = new List<FeedItem>();
    }

    public RSSFeed(String uri)
    {
        Posts = new List<FeedItem>();
        Uri = uri;
        Fetch();
    }

    public …
Run Code Online (Sandbox Code Playgroud)

c# wpf asynchronous observablecollection

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

多态性问题:如何检查派生类的类型?

这是我的第一个问题:)

我知道我不应该检查对象类型,而是使用dynamic_cast,但这不会解决我的问题.

我有一个名为Extension和接口的类,名为IExtendable和IInitializable,IUpdatable,ILoadable,IDrawable(后四个基本相同).如果Extension实现IExtendable接口,它可以使用不同的Extension对象扩展自身.

问题是我想允许实现IExtendable的Extension只扩展,扩展实现与原始扩展相同的接口.

你可能不会那么糟糕,所以我试着用代码来解释它:

class IExtendable
{
public:
 IExtendable(void);

 void AddExtension(Extension*);
 void RemoveExtensionByID(unsigned int);

 vector<Extension*>* GetExtensionPtr(){return &extensions;};
private:
 vector<Extension*> extensions;
};

class IUpdatable
{
public:
 IUpdatable(void);
 ~IUpdatable(void);

 virtual void Update();
};

class Extension
{
public:
 Extension(void);
 virtual ~Extension(void);

 void Enable(){enabled=true;};
 void Disable(){enabled=false;};

 unsigned int GetIndex(){return ID;};

private:
 bool enabled;
 unsigned int ID;

 static unsigned int _indexID;
};
Run Code Online (Sandbox Code Playgroud)

现在想象我创建扩展的情况如下:

class MyExtension : public Extension, public IExtendable, public IUpdatable, public IDrawable
{
public:
    MyExtension(void);
    virtual ~MyExtension(void);

    virtual void AddExtension(Extension*);
    virtual void …
Run Code Online (Sandbox Code Playgroud)

polymorphism virtual types dynamic-cast interface

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

如何在CKEditor中侦听小部件选择?

我正在通过CKEDITOR.instances [editorId] .insertHtml()(在角应用程序内)添加自定义小部件,我需要对小部件选择做出反应,可能会取消选择.

我看到该窗口小部件会触发诸如select,deselect,focus和blur等事件,但我无法找到如何在每个窗口小部件上设置监听器.

这可以在插件的init函数内完成吗?

谢谢

javascript ckeditor angularjs

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