我想创建这样的自定义视图.
我尝试了以下内容
<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 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,如下所示.有没有人知道为什么会发生这种情况或者我做错了什么?任何帮助将不胜感激.谢谢

我正在创建一个从UserControl派生的自定义控件,我想将焦点设置为.
自定义控件包含一个ComboBox控件,我在它旁边绘制一些字符串.
ComboBox可以获得焦点,但我希望能够将焦点设置为UserControl本身.如果它具有焦点,我的OnPaint处理程序被设置为稍微不同地绘制控件,但是当我创建自定义控件时它从父窗体调用CanFocus()并返回false.
是否有财产或其他东西?
我想在里面创建带有图像和文字的按钮.例如,我会为"浏览文件夹"和"导入"等按钮使用不同的图像和文本.其中一个选择是使用模板.我看了一下simliar的问题
但有没有办法可以绑定图像源而不使用依赖属性或任何其他类?
谢谢
这种情况以前发生了很多次,但我从来没有费心去弄清楚原因,现在我已经厌倦了:
例如,我从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.要解决问题,请进入代码隐藏并初始化变量,但下次重建时,初始化行将消失.
当重写自定义控件的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.
救命.
首先,这是我的错误的错误日志条目
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) WPF自定义控件
我想构建一个新的自定义控件.我发现很少的教程给了我一些如何实现这一目标的线索.据我了解,创建一个新的自定义控件总是通过扩展当前控件来完成,甚至可以从层次结构的最基本级别扩展控件,例如,您甚至可以扩展:
如以下教程中所述:http://wpftutorial.net/HowToCreateACustomControl.html
所以,我按照教程创建了一个自定义控件库类型的新项目,得到了我的通用.xaml和我的代码.到现在为止还挺好.
我可以区分3种类型或类别的事件.
可以使用我的控件的窗口(或容器)可以使用的事件:那些是我想要暴露给外部的事件.怎么写那些?
与控制本身相关但不暴露在外的事件; 例如,如果鼠标超出我的控制范围,我想对此做出反应.我可以在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",还有什么呢?
我现在正在尝试2天......感觉我在理解事情如何运作时遗漏了一些东西.没有找到任何深入解释这些问题的教程.
我希望看到我在这里提出的每个问题的几行例子.
谢谢.
我有一个自定义复选框控件,我使用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)