我有一个活动,有2个片段.两者都是ListFragments,并且都将MenuItems贡献给菜单.我有一个MenuItem我设置了属性android:showAsAction让它显示为ActionBar上的一个按钮.哪个工作正常.
现在MenuItem依赖于状态.它是暂停/恢复菜单选项,用于暂停和恢复队列.我的问题是,当创建片段时,我无法弄清楚如何设置它的初始雕像.
它的状态取决于队列是否暂停.所以我有一个AsyncTask来获取队列并根据队列的状态设置一个布尔值(暂停).我正在调用PrepareOptionsMenu来根据队列的最后已知状态设置Pause菜单项的文本,如果我将MenuItem保留在实际菜单中,这将很有用.您点击菜单图标并触发onPrepareOptionsMenu,菜单会在显示之前更新.
问题是,如果我在ActionBar(showAsAction)上放置相同的MenuItem,如何强制它更新而不必调用onPrepareOptionsMenu?我需要能够这样做,因为在第一次启动应用程序时,我发送了一个获取队列的请求,但是在设置并显示ActionBar后,任务返回.我在我的片段中创建了一个处理程序,每次我获得队列更新时都会调用它,但是从那里,如何在ActionBar上更新我的MenuItem的文本?我似乎无法找到一种方法来获取当前设置的Menu来操作它,除了onPrepareOptionMenu.
罗布
我正在尝试为我的应用程序添加一个夜间主题,我浪费了将近三个小时,只是试图让我的导航抽屉中的文本和图标变为白色以及深色背景.下面是我想要去了解在这样的方式onCreate()中MainActivity.java:
navigationView = (NavigationView) findViewById(R.id.navigation_view);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
// This method will trigger onItemClick of navigation menu
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
// Checking if the item is in checked state or not, if not make it in checked state
if (menuItem.isChecked())
menuItem.setChecked(false);
else menuItem.setChecked(true);
if (nightMode == 0) {
SpannableString spanString = new SpannableString(menuItem.getTitle().toString());
spanString.setSpan(new ForegroundColorSpan(Color.WHITE), 0, spanString.length(), 0); // fix the color to white
menuItem.setTitle(spanString);
}
Run Code Online (Sandbox Code Playgroud)
该nightMode布尔是无关紧要,因为它的工作原理.当夜间模式设置为开(0)时,导航抽屉中选择的任何菜单项都将变为白色.然而,这仅在选择每个项目时才会发生,这显然是不方便的.这是我的drawer_dark.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu …Run Code Online (Sandbox Code Playgroud) 我使用ActivityCompat.invalidateOptionsMenu(MainActivity.this);这样我的菜单项"刷新"可以自动启用/禁用而无需使用必须触摸"菜单"选项(想象用户离开菜单...我需要"刷新"菜单项自动禁用和启用自己).
ActivityCompat.invalidateOptionsMenu(MainActivity.this)Android 11+ 的工作正常.但是我可以用什么来安装Android API <11?:S我搜索了这么多,但我找不到答案.有人可以帮我这个吗?
这适用于Android API 11+,使用onPrepareOptionsMenu和ActivityCompat.invalidateOptionsMenu(MainActivity.this).问题是尝试在Android API <11中完成.
这是我的onPrepareOptionsMenu方法:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if(menuRefreshEnable){
menu.getItem(0).setEnabled(true);
}
if(!menuRefreshEnable){
menu.getItem(0).setEnabled(false);
}
return true;
}
Run Code Online (Sandbox Code Playgroud) 我有一个连接到数据库的列表视图,显示所有条目.如果用户长按listview(数据库条目)中的项目,我想要显示一个菜单,显示编辑或删除条目的选项.我怎样才能做到这一点.
直到现在,我已经尝试使用onItemLongClick监听器和吐司,显示长按的视图的ID.
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
String res = Long.toString(id);
Toast toast = Toast.makeText(this, res, Toast.LENGTH_SHORT);
toast.show();
return true;
}
Run Code Online (Sandbox Code Playgroud) 在XAML中,如何在菜单中放置标准分割线?
例如
<MenuItem Header="_File" Name="m_fileMenu">
<MenuItem Header="_Open" Command="ApplicationCommands.Open"/>
<!-- Trying to put a divider here! -->
<MenuItem Header="-" /> <!-- Wrong guess -->
<MenuItem Header="E_xit" Command="ApplicationCommands.Close" />
</MenuItem>
Run Code Online (Sandbox Code Playgroud) 我一直在扫描,试图找到一个合适的解决方案,为主页面中的菜单项分配"活动/当前"类.关于是否执行此客户端与服务器端,该线路在中间分开.
说实话,我是JavaScript和MVC的新手,所以我没有意见.我更愿意以"最干净"和最恰当的方式做到这一点.
我有以下jQuery代码将"活动"类分配给<li>项...唯一的问题是"索引"或默认视图菜单项将始终分配活动类,因为URL始终是子字符串其他菜单链接:
(default) index = localhost/
link 1 = localhost/home/link1
link 2 = localhost/home/link1
$(function () {
var str = location.href.toLowerCase();
$('#nav ul li a').each(function() {
if (str.indexOf(this.href.toLowerCase()) > -1) {
$(this).parent().attr("class","active"); //hightlight parent tab
}
});
Run Code Online (Sandbox Code Playgroud)
伙计们,有更好的方法吗?有人至少会帮助我获得客户端版本的防弹吗?那么"索引"或默认链接总是"活跃"?有没有办法为索引方法分配假扩展?喜欢而不仅仅是基本URL localhost/home/dashboard,它不会是每个链接的子串?
说实话,我并没有真正遵循做这个服务器端的方法,这就是为什么我试图用jQuery做客户端...任何帮助将不胜感激.
自从我实现app compat后,我的searchview不再起作用了:
Process: com.laurenswuyts.witpa, PID: 26666
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.SearchView.setSearchableInfo(android.app.SearchableInfo)' on a null object reference
at com.laurenswuyts.witpa.Activities.Events.EventActivity.onCreateOptionsMenu(EventActivity.java:75)
at android.app.Activity.onCreatePanelMenu(Activity.java:2820)
at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:275)
at android.support.v7.app.ActionBarActivity.superOnCreatePanelMenu(ActionBarActivity.java:276)
at android.support.v7.app.ActionBarActivityDelegate$1.onCreatePanelMenu(ActionBarActivityDelegate.java:79)
at android.support.v7.widget.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:49)
at android.support.v7.internal.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:459)
at android.support.v7.internal.app.ToolbarActionBar$1.run(ToolbarActionBar.java:69)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Run Code Online (Sandbox Code Playgroud)
因此,当我拥有它时,搜索视图的nullpointer:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.event_main, menu);
// Get the SearchView and set the searchable configuration
// Associate searchable configuration with the …Run Code Online (Sandbox Code Playgroud) 我有以下标记,
<ul id="menu">
<li><a href="#">Something1</a></li>
<li><a href="#">Something2</a></li>
<li><a href="#">Something3</a></li>
<li><a href="#">Something4</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
它<li>有点大,左边有一个小图像,我必须实际点击它<a>来激活链接.如何点击<li>激活链接?
EDIT1:
ul#menu li
{
display:block;
list-style: none;
background: #e8eef4 url(images/arrow.png) 2% 50% no-repeat;
border: 1px solid #b2b2b2;
padding: 0;
margin-top: 5px;
}
ul#menu li a
{
font-weight: bold;
text-decoration: none;
line-height: 2.8em;
padding-right:.5em;
color: #696969;
}
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我经常启用/禁用菜单条目,并从onPrepareOptionsMenu中看到它们.
今天我开始将android:showAsAction菜单属性添加到我的一些Android 2.x应用程序中,以显示ActionBar上最常用的菜单条目.
ActionBar不会立即反映启用/禁用和可见性.我需要点击右边的菜单下拉菜单才能看到这种变化.
好的,我知道菜单会在PrepareOptionsMenu上触发.但是我需要做些什么才能刷新ActionBar?我认为这个变化需要从onOptionsItemSelected中应用,但我不知道应该调用什么.
这是菜单:
<item
android:icon="@drawable/ic_menu_mapmode"
android:id="@+id/men_mapview"
android:showAsAction="ifRoom|withText"
android:title="@string/txt_mapview" />
<item
android:icon="@drawable/ic_menu_mapmode"
android:id="@+id/men_satelliteview"
android:showAsAction="ifRoom|withText"
android:title="@string/txt_satelliteview" />
Run Code Online (Sandbox Code Playgroud)
这是onPrepareOptionsMenu:
@Override
public boolean onPrepareOptionsMenu(final Menu menu) {
MenuItem menuItemMapView = menu.findItem(R.id.men_mapview);
MenuItem menuItemSatelliteView = menu.findItem(R.id.men_satelliteview);
if (mapView.isSatellite()) {
menuItemMapView.setEnabled(true).setVisible(true);
menuItemmenuItemSatelliteView.setEnabled(false).setVisible(false);
} else {
menuItemMapView.setEnabled(false).setVisible(false);
menuItemmenuItemSatelliteView.setEnabled(true).setVisible(true);
}
return super.onPrepareOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
这是onOptionsItemSelected
@Override
public boolean onOptionsItemSelected(final MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.men_mapview:
mapView.setSatellite(false);
mapView.setStreetView(true);
mapView.invalidate();
invalidateOptionsMenu(); // This works on Android 3.x devices only
return true;
case R.id.men_satelliteview:
mapView.setSatellite(true);
mapView.setStreetView(false);
mapView.invalidate(); …Run Code Online (Sandbox Code Playgroud) 使用twitter bootstrap,我需要启动主导航的li部分的活动类.自动的.我们使用php而不是ruby.
示例导航:
<ul class="nav">
<li><a href="/">Home</a></li>
<li><a href="/forums">Forums</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/faqs.php">FAQ's</a></li>
<li><a href="/item.php">Item</a></li>
<li><a href="/create.php">Create</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
Bootstrap代码如下:
<li class="active"><a href="/">Home</a></li>
Run Code Online (Sandbox Code Playgroud)
因此,只需要弄清楚如何将活动类附加到当前页面.看了几乎所有关于Stack的答案,没有真正的快乐.
我玩过这个:
/*menu handler*/
$(function(){
var url = window.location.pathname;
var activePage = url.substring(url.lastIndexOf('/')+1);
$('.nav li a').each(function(){
var currentPage = this.href.substring(this.href.lastIndexOf('/')+1);
if (activePage == currentPage) {
$(this).parent().addClass('active');
}
});
})
Run Code Online (Sandbox Code Playgroud)
但没有快乐.
menu ×10
android ×6
anchor ×1
asp.net-mvc ×1
css ×1
html ×1
html-lists ×1
java ×1
jquery ×1
listview ×1
long-click ×1
master-pages ×1
search ×1
wpf ×1
xaml ×1
xml ×1