基本上是从widget_demo中搞出来的。
具体效果参见我发的那个华容道游戏GtkWidget* dropdownview = gtk_drop_down_view_new();
GtkWidget* option;
GtkWidget* option_item;
GtkWidget* label;
option_item = gtk_drop_down_item_new();
label = gtk_label_new("");
gtk_drop_down_item_set_widget(GTK_DROP_DOWN_ITEM(option_item), label);//这个将一个widget加入到item,必须加。
gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5);//设置对齐方式
gtk_drop_down_item_set_headline_with_alignment(GTK_DROP_DOWN_ITEM(option_item), "过关记录",0,0);
gtk_drop_down_view_add_item (GTK_DROP_DOWN_VIEW(dropdownview), GTK_DROP_DOWN_ITEM(option_item), NULL, TRUE);
g_object_set(option_item, "drop-down-item-style", HORIZONTAL_STYLE, NULL);
GtkBorder border;
border.left = 0;
border.right = 0;
border.top = 0;
border.bottom = 0;//这个东西搞过CSS的应该知道,我解释不清。 通过样的设置可以将slide_button移上来。
option_item = gtk_drop_down_item_new();
g_object_set(option_item,"inner-border",&border,NULL);
GtkWidget *switch_button = gtk_slide_button_new_with_label("背景音乐");
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(switch_button), musicOn);
gtk_drop_down_item_set_widget(GTK_DROP_DOWN_ITEM(option_item), switch_button);
gtk_drop_down_view_add_item(GTK_DROP_DOWN_VIEW(dropdownview), GTK_DROP_DOWN_ITEM(option_item), NULL, FALSE);
g_signal_connect(switch_button,"toggled",slide_btn_clicked_cb,NULL);
option_item = gtk_drop_down_item_new();
label = gtk_label_new("");
gtk_drop_down_item_set_widget(GTK_DROP_DOWN_ITEM(option_item), label);
gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5);
gtk_drop_down_item_set_headline_with_alignment(GTK_DROP_DOWN_ITEM(option_item), "退出游戏",0,0);
gtk_drop_down_view_add_item (GTK_DROP_DOWN_VIEW(dropdownview), GTK_DROP_DOWN_ITEM(option_item), NULL, TRUE);
g_signal_connect(GTK_OBJECT(dropdownview), "clicked-item", G_CALLBACK(drop_down_item_pressed_cb), form);
//添加点击回调。这些不是展开的事件。
g_signal_connect (dropdownview, "item-collapsed", G_CALLBACK(drop_down_item_collapsed),NULL);//这个是收缩的事件。
g_signal_connect (dropdownview, "item-expanded", G_CALLBACK(drop_down_item_expanded),NULL);//这个展开的。
gtk_container_add(GTK_CONTAINER(form), dropdownview);//将他加到form里。 当然如果内容多的话就要加一下可以滚动的scrolled window.
下面是回调函数的实现。得到点击选项事件。void drop_down_item_pressed_cb(GtkDropDownView *view, GtkWidget* item,gpointer data)
{
//我是直接通过比较headline来确定的。哪位若有更好的方法可以告诉我下。
gchar *headline = gtk_drop_down_item_get_headline(GTK_DROP_DOWN_ITEM(item));
if(strcmp(headline, "退出游戏") == 0)
{
exit_app(item,data);
}
}
分享到:
相关推荐
本例子主要是自定义一个下拉列表框,演示Spinner的用法,在Android中创建一个DropDownView,动态添加列表框的值,示例运行后,用户即进入添加模式,添加后列表框中会一项内容,依次类推,单击下拉框会看到所添加的值...
在iOS开发中,"ios-DropDownView.zip" 提供了一个实现下拉菜单的示例。下拉菜单通常用于在有限的空间内展示多个选项,让用户能够快速选择。在这个项目中,下拉菜单以一个UITableView的形式呈现,这允许用户滚动浏览...
在Android开发中,"DropDownView.zip" 提供的是一个实现可跟随手指下拉的仿通知栏下拉效果的Activity。这种效果通常用于自定义下拉刷新或者创建类似通知栏的交互体验,使得用户界面更加生动且具有触觉反馈。下面我们...
DropDownView Gradle Ensure your minSdkVersion is 19 or above: android { compileSdkVersion 25 defaultConfig { applicationId "com.anthonyfdev.dropdownviewexample" minSdkVersion 19 targetSdk...
下拉式菜单 用Objective-C编写的动画下拉菜单 *请★★如果您喜欢它的图书馆! ##安装## 我尚未为此项目设置Pod,因此,现在就安装它,只需将DDMenu文件夹拖放到您的XCode项目中即可。...DDMenuItem *i
android-dropdown-menu An dropdown menu for android, you can attach ... mDropdownView = (DropdownView) findViewById(R.id.dropdown_view); mDropdownView.setup(simpleListView1, simpleListView2); mDropdow
let dropdownView = UITableView() dropdownView.dataSource = self // 添加数据 let items = ["选项1", "选项2", "选项3"] dropdownView.reloadData() // ... @objc func dropdownTapped() { // 显示/...
TextView dropdownView = (TextView) LayoutInflater.from(context).inflate(R.layout.custom_spinner_dropdown_item, parent, false); // 设置数据 dropdownView.setText(items.get(position)); return ...
通用先生 MRCommon集合了许多常用方法,我根据功能将其分为以下几类: [BaseInherit]-继承的基类 [ESUnit]-OpelGL ES 3.0的封装着色器,形状,变换。... 请参见Example/DropDownView(筛选框) 参见Example/SingleSwit
为了达到美团级联菜单的效果,开发者可能需要自定义Spinner的DropdownView,并在点击事件中动态加载下级菜单的数据。 此外,项目中可能涉及了数据结构的设计。由于级联菜单涉及到多级关联,所以数据模型可能采用树...
1. 省市区选择器通常采用Spinner或自定义的DropdownView,提供级联选择效果。 2. 使用Adapter将数据模型转化为ListView或RecyclerView的Item,每个Item展示一个地区选项。 3. 实现滚动监听,当用户选择一个省份后,...
在安卓应用开发中,下拉选择控件是用户界面...在实际项目中,我们可以根据需求选择自定义控件或使用现有库,结合文件名"DropDownView"推测,这可能是作者实现的一个自定义下拉选择控件,可能包含了上述功能的实现代码。
2. 自定义布局:可以通过设置 Spinner的android:popupBackground属性来自定义下拉列表的背景,同时可以修改DropdownView的布局文件来定制每个条目的显示效果。 五、源码解析 深入研究Spinner的源码可以帮助我们了解...
4. **自定义ViewGroup**:如果MySpinner实现了自定义的DropdownView,需要研究其绘制和测量过程。 5. **样式和主题**:检查项目的res/values目录,看是否自定义了主题和样式资源。 四、毕业设计与论文 在毕业设计...
Android的Dropdown效果通常通过Spinner组件实现,但为了达到非常Material Design风格,可能需要自定义一个名为`DropDownView`的View类。自定义View允许开发者根据需求扩展Android的基础组件,实现独特的交互和视觉...
布局文件中包含添加数据的按钮(`addDataIv`)、下拉功能菜单(`dropDownView`)以及背景视图(`bgView`)。按钮用于触发弹出框的显示和隐藏,而背景视图用于实现点击背景时隐藏菜单的功能。 其次,Android的事件...
如果你需要更复杂的定制,可以创建一个自定义的DropdownView。 3. **处理触摸事件**: 在自定义Adapter中,可能需要处理触摸事件,比如点击或滑动事件,以实现特殊的行为。 4. **自定义下拉动画**: 如果想在...