标签: custom-controls

如何在Android中的按钮上放置按钮?

我想创建这样的自定义视图.在此输入图像描述

我尝试了以下内容

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/customView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@drawable/sample_image" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right|top"
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right|bottom"
        android:text="Button" />

</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

我该如何创建这样的视图?如何将按钮放在imageview上?

提前致谢

android custom-controls android-layout

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

当我为Android RatingBar使用自定义星标时,总是显示半星值低于0.5的半星

了很多帖子(例如Android RatingBar更改星级颜色,更改评级栏中星级的颜色,其中评级栏是在android中动态创建的,我如何设置评级栏的星号?)为了改变RatingBar中星星的颜色.我跟踪帖子并且能够更改自定义RatingBar的星星,但是在这样做时我不再能够将值设置为小于一半的小数(例如0.2).它总是显示为一半(例如0.5).当我将值设置为高于一半(例如0.7)时,它会完美显示.

以下是我用于自定义RatingBar的示例图像(即ratingbar_empty.png,ratingbar_half.png,ratingbar_full.png)

空星 半星 全明星

以下是使用自定义星标的xml(ratingbar_custom.xml).

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background" android:drawable="@drawable/ratingbar_empty" />
    <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/ratingbar_half" />
    <item android:id="@android:id/progress" android:drawable="@drawable/ratingbar_full" />
</layer-list>'
Run Code Online (Sandbox Code Playgroud)

以下是我在布局中如何使用自定义RatingBar.

<RatingBar 
    android:id="@+id/rb_rating"
    android:numStars="7"
    android:rating="0"      
    android:stepSize="0.01"                     
    android:isIndicator="true"                                                            
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:progressDrawable="@drawable/ratingbar_custom" />
Run Code Online (Sandbox Code Playgroud)

当我把它们放在一起并将RatingBar的值设置为0.2时,它会将RatingBar视觉设置为0.5,如下所示.有没有人知道为什么会发生这种情况或者我做错了什么?任何帮助将不胜感激.谢谢

将自定义RatingBar设置为0.2,但在视觉上显示0.5

android custom-controls ratingbar

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

显示自定义控件的自定义图标?

在visual studio中,当您创建自定义控件时,您会得到它 默认工具箱图标 丑陋的小紫色齿轮用于控制图标而不是自定义控件 默认工具箱图标.

那么如何更改我的控件图标呢?

c# user-controls custom-controls

12
推荐指数
2
解决办法
8769
查看次数

将焦点设置为.NET UserControl ......?

我正在创建一个从UserControl派生的自定义控件,我想将焦点设置为.

自定义控件包含一个ComboBox控件,我在它旁边绘制一些字符串.

ComboBox可以获得焦点,但我希望能够将焦点设置为UserControl本身.如果它具有焦点,我的OnPaint处理程序被设置为稍微不同地绘制控件,但是当我创建自定义控件时它从父窗体调用CanFocus()并返回false.

是否有财产或其他东西?

.net c# custom-controls winforms

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

与图象和文本的按钮模板在wpf

我想在里面创建带有图像和文字的按钮.例如,我会为"浏览文件夹"和"导入"等按钮使用不同的图像和文本.其中一个选择是使用模板.我看了一下simliar的问题

使用控件模板创建图像+文本按钮?

但有没有办法可以绑定图像源而不使用依赖属性或任何其他类?

谢谢

wpf binding templates custom-controls

12
推荐指数
5
解决办法
7万
查看次数

自动生成的代码中未自定义自定义用户控件

这种情况以前发生了很多次,但我从来没有费心去弄清楚原因,现在我已经厌倦了:

例如,我从RichTextBox或Panel派生一个类,我重建我的项目以将类添加到VS设计器工具箱,然后将自定义用户控件拖放到Form.一切正常,我可以运行我的项目......

当我通过设计器编辑窗体或自定义用户控件的属性时出现问题.有时,设计器会从其代码隐藏中删除初始化行,从而导致设计器和可执行文件中出现异常,因为控件仍然未初始化.

换句话说,从Form1.Designer.cs中删除以下行:

this.customRichTextBox1=new CustomRichTextBox();
Run Code Online (Sandbox Code Playgroud)

没有其他行从代码隐藏中删除,因此自定义控件的属性仍然设置,尽管变量保持未初始化.

我的解决方案一直是在设计器代码隐藏中手动初始化我的用户控件,但设计人员最终会再次删除它.

我相信当我通过设计器构建自定义用户控件时,这不会发生(但我不完全确定).它只发生在我手动定义类似下面的内容时:

class CustomRichTextBox:RichTextBox{}
Run Code Online (Sandbox Code Playgroud)

这太烦人了.我究竟做错了什么?


正如@Cody所要求的,以下是重现问题的步骤.我正在使用VS2010,但我认为自2005年以来我遇到了这个问题.

步骤1.创建新的Windows窗体应用程序,任何框架

步骤2.在主Form类下面添加以下类:(这恰好是这次导致我出现此问题的控件.)

class CustomRichTextBox : RichTextBox
{
    Timer tt = new Timer();

    internal CustomRichTextBox()
    {
        tt.Tick += new EventHandler(tt_Tick);
        tt.Interval = 200;
    }


    protected override void OnTextChanged(EventArgs e)
    {
        tt.Stop();
        tt.Start();
    }

    void tt_Tick(object sender, EventArgs e)
    {
        System.Diagnostics.Trace.WriteLine("Hello world!");
    }
}
Run Code Online (Sandbox Code Playgroud)

步骤3.按F6重建.

步骤4.通过从工具箱中拖放,将CustomRichTextBox控件添加到窗体.

步骤5.如果您愿意,可以按F5测试应用程序,但它应该可以工作.关闭正在运行的应用

步骤6.按F6重建,此时,设计人员应该崩溃并显示以下消息:"变量'customRichTextBox1'未声明或从未分配过." (在一种情况下,整个VS完全崩溃,但错误通常包含在设计器中.)

步骤7.要解决问题,请进入代码隐藏并初始化变量,但下次重建时,初始化行将消失.

c# user-controls designer custom-controls visual-studio

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

我无法突破我的ClipRectangle,我想哭

当重写自定义控件的OnPaint方法时,我提供了一个PaintEventArgs,它包含一个Graphics对象和一个ClipRectangle.ClipRectangle对我的口味来说太小了,所以我想要将它扩展为100像素,或者完全忽略它.

无论我做什么,我似乎都无法突破ClipRectangle.到目前为止,我已经尝试过:

e.ClipRectangle.Inflate(100, 0);
e.Graphics.ResetClip();
e.Graphics.SetClip(new Rectangle(x, y, w, h));
Run Code Online (Sandbox Code Playgroud)

父控件调用Invalidate(true)(强制所有子控件的子控件失效).

我也做了一些谷歌搜索,看着鲍勃鲍威尔的网站,但找不到核武器.

ResetClip将Graphics对象的剪切区域重置为无限大的Rectangle,但Graphics对象高兴地继续使用提供的ClipRectangle.

救命.

c# system.drawing custom-controls winforms

12
推荐指数
2
解决办法
2783
查看次数

Dispatcher在Textchanged事件中的Messagebox.Show上抛出InvalidOperationException

首先,这是我的错误的错误日志条目

crash program @ 15-9-2011 15:01:30error:System.InvalidOperationException: Dispatcher processing has been suspended, but messages are still being processed. at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)

无论如何代码:

private void TB_postcode_cijfers_TextChanged(object sender, TextChangedEventArgs e){
if (TB_postcode_cijfers.Text != string.Empty || TB_postcode_cijfers.Text.Length > 0)
{
    LBL_postcode.Content = Postcode_cijfers + Postcode_letters;
    if (TB_postcode_cijfers.Text.Length == 4 && TB_postcode_letters.Text.Length == 2)
    {
        if (!ZoekOpPostcode(Injectioncheck(TB_postcode_cijfers.Text + TB_postcode_letters.Text)))
        {
            //MessageBox.Show("Geen resultaat gevonden, " + errortext);
            if (MessageBox.Show("Geen resultaat gevonden, " + errortext + ".\n Wilt u …
Run Code Online (Sandbox Code Playgroud)

c# wpf custom-controls

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

WPF自定义控件构造,触发器和事件

WPF自定义控件

我想构建一个新的自定义控件.我发现很少的教程给了我一些如何实现这一目标的线索.据我了解,创建一个新的自定义控件总是通过扩展当前控件来完成,甚至可以从层次结构的最基本级别扩展控件,例如,您甚至可以扩展:

  • 的UIElement
  • FrameworkElement的
  • 控制
  • ContentControl中
  • HeaderedContentControl
  • ItemsControl的
  • 选择
  • RangeBase

如以下教程中所述:http://wpftutorial.net/HowToCreateACustomControl.html

所以,我按照教程创建了一个自定义控件库类型的新项目,得到了我的通用.xaml和我的代码.到现在为止还挺好.

我可以区分3种类型或类别的事件.

  1. 可以使用我的控件的窗口(或容器)可以使用的事件:那些是我想要暴露给外部的事件.怎么写那些?

  2. 与控制本身相关但不暴露在外的事件; 例如,如果鼠标超出我的控制范围,我想对此做出反应.我可以在XAML中做到这一点:

    <ControlTemplate.Triggers>
      <Trigger Property="IsMouseOver" Value="true">  
        <Setter Property="Fill" TargetName="LeftTraingularIndicator">  
          <Setter.Value>  
            <SolidColorBrush Color="Yellow" />  
          </Setter.Value>  
        </Setter>
      </Trigger>
    </ControlTemplate.Triggers>  
    
    Run Code Online (Sandbox Code Playgroud)

假设我在我的ControlTemplate中有一个带有fill属性的元素,名为x:name ="LeftTraingularIndicator"

问题:

现在我想在我的XAML中对IsMouseDown做出反应.我怎么做?没有"IsMouseDown"触发器.此外,如果我想对后面的代码做出反应,该怎么办?如果我想从后面的代码中更改LeftTraingularIndicator"Fill",还有什么呢?

  1. 与子元素相关的事件是我的ControlTemplate视觉构造的一部分,例如,如果我想对XAML中的"LeftTraigularIndicator"的"IsMouseOver"做出反应,甚至在Code Behind中做出反应?也许两者都有.

我现在正在尝试2天......感觉我在理解事情如何运作时遗漏了一些东西.没有找到任何深入解释这些问题的教程.

我希望看到我在这里提出的每个问题的几行例子.

谢谢.

.net c# wpf custom-controls wpf-controls

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

在Xamarin Forms上创建ICommand Bindable属性

我有一个自定义复选框控件,我使用ICommand属性和相应的可绑定属性创建(我的复选框是一个Xamarin.Forms XAML页面),代码是:

CheckBox.xaml

<Image x:Name="imgCheckBox"
       WidthRequest="20"
       HeightRequest="20"/>

<Label x:Name="lblCheckBox"
       TextColor="Black"
       VerticalOptions="CenterAndExpand"/>

<TapGestureRecognizer Tapped="OnCheckBoxTapped"/>
Run Code Online (Sandbox Code Playgroud)

CheckBox.xaml.cs

public partial class CheckBox : ContentView
{
    private static ImageSource uncheckedImage;
    private static ImageSource checkedImage;

    public CheckBox()
    {
        InitializeComponent();
        uncheckedImage = ImageSource.FromResource("cbUnchecked.png");
        checkedImage = ImageSource.FromResource("cbChecked.png");
        imgCheckBox.Source = uncheckedImage;
    }

    public static readonly BindableProperty IsCheckedProperty =
        BindableProperty.Create<CheckBox, bool>(
            checkbox => 
                checkbox.IsChecked,
                false,
                propertyChanged: (bindable, oldValue, newValue) =>
                {
                    CheckBox checkbox = (CheckBox)bindable;
                    EventHandler<bool> eventHandler = checkbox.CheckedChanged;
                    if (eventHandler != null)
                    {
                        eventHandler(checkbox, newValue);
                    }
                });        

    public bool …
Run Code Online (Sandbox Code Playgroud)

custom-controls bindable xamarin xamarin.forms

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