相关疑难解决方法(0)

菜单项的自定义视图

我需要动态菜单项,一个用户定义颜色的圆圈,如下所示:

在此输入图像描述

触摸此菜单项将打开一个颜色选择器.

现在,我有一个示例ColorPickerIcon,它扩展了View

public class ColorPickerIcon extends View {

private Paint mPaint;
private int mColor;

private final int mRadius = 20;

public ColorPickerIcon(Context context) {
    super(context);

    mColor = Color.BLACK;
    mPaint = createPaint();
}

public ColorPickerIcon(Context context, AttributeSet attrs) {
    super(context, attrs);

    mColor = Color.BLACK;
    mPaint = createPaint();
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    canvas.drawCircle(0, 0, mRadius, mPaint);
}

public void setPaintColor(int color) {
    mColor = color;
}

private Paint createPaint() {

    Paint temp = new Paint();
    temp.setAntiAlias(true);
    temp.setStyle(Paint.Style.STROKE); …
Run Code Online (Sandbox Code Playgroud)

android menuitem android-actionbar

20
推荐指数
2
解决办法
5万
查看次数

如何让ActionBar上的项目在左侧,一个在中间,一个在右侧?

我正在使用actionbarsherlock它.我在动作栏中想要的示例:
[登录] [公司徽标] [过滤器]

我在操作栏中获得的示例:
      [登录] [公司徽标] [过滤器]

我在res/menu中创建了登录按钮,公司徽标和过滤按钮(以drawables的形式)activity_main.xml.但是,操作栏上的那些按钮无法完全向左移动,即使我已删除默认应用程序徽标并将其设置为false:

getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setDisplayShowHomeEnabled (false);
Run Code Online (Sandbox Code Playgroud)

这是菜单中的代码activity_main.xml:

<item android:id="@+id/login"
      android:icon="@drawable/login_btn"
      android:layout_gravity="left"
      android:showAsAction="always"/>

<item android:id="@+id/logo"
      android:icon="@drawable/logo_btn"
      android:layout_gravity="center"
      android:showAsAction="always"/>

<item android:id="@+id/filter"
      android:icon="@drawable/filter_btn"
      android:layout_gravity="right"
      android:showAsAction="always"/>
Run Code Online (Sandbox Code Playgroud)

android actionbarsherlock

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

单击设置了actionLayout的菜单项时未调用onOptionsItemSelected()

在我的操作栏中,我已经定义了一个菜单项,可以通过以下代码显示文本"DONE":

menu.xml文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:id="@+id/action_register_text"
    android:actionLayout="@layout/action_done_text"
    android:title="@string/action_done"
    android:showAsAction="always"/>

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

action_done_text.xml:

<?xml version="1.0" encoding="utf-8"?>

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/expand_activities_button"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:clickable="true"
android:focusable="true"
android:addStatesFromChildren="true">

<TextView
    android:id="@+id/register_action_bar_done"
    android:layout_width="53dp"
    android:layout_height="35dp"
    android:layout_gravity="center"
    android:layout_marginRight="10dip"
    android:gravity="center"
    android:text="DONE" />

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

我已onCreateOptionsMenu在代码中正确实现,并且视图可以正确显示文本,但是当我点击DONE文本时,onOptionsItemSelected不会调用.对我来说,似乎无法识别click事件.

我想知道上面的方法是不是添加文本菜单项的好方法?

android menuitem actionbarsherlock

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

如何在Android操作栏切换中获取/设置操作事件

我发现这篇文章如何添加一个开关到android动作栏? 这对我有用.但我不能得到它的事件.我正在使用appcompat,我使用了app命名空间for actionLayout和showAsAction,但是我无法处理它对onOptionsItemSelected方法的点击?我的应用程序在启动时崩溃了.如何处理它或这段代码有什么问题?这是我的代码

menu_main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      tools:context=".MainActivity">
<item
    android:id="@+id/myswitch"
    android:title=""
    app:showAsAction="always"
    app:actionLayout="@layout/switch_layout"/>
Run Code Online (Sandbox Code Playgroud)

switch_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <Switch
        android:id="@+id/switchForActionBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
@Override
        public boolean onCreateOptionsMenu(Menu menu) {
           getMenuInflater().inflate(R.menu.your_menu, menu);

         MenuItem menuItem= menu.findItem(R.id.myswitch);
         Switch switcha = (Switch)menuItem.findViewById(R.id.switchForActionBar);
    switcha.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            // do anything here on check changed 
        }
    });
    return super.onCreateOptionsMenu(menu);
        }
Run Code Online (Sandbox Code Playgroud)

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    int id = …
Run Code Online (Sandbox Code Playgroud)

android

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

Android 自定义工具栏 onOptionsItemSelected 不起作用

我有两个相似的按钮

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<Button
    android:id="@+id/sync_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Sync"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    />

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

作为项目添加到菜单

<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:id="@+id/toggle_item"
    android:title=""
    app:showAsAction="always"
    app:actionLayout="@layout/switch_button"
    />
<item
android:id="@+id/sync_item"
android:title=""
app:showAsAction="always"
app:actionLayout="@layout/sync"
/>
</menu>
Run Code Online (Sandbox Code Playgroud)

我在 onCreateOptionsMenu 中将项目膨胀到菜单

getMenuInflater().inflate(R.menu.menu_main, menu);
Run Code Online (Sandbox Code Playgroud)

一切似乎都很好,但是当我在应用程序中单击时,没有任何反应,因为从未调用过 onOptionsItemSelected(MenuItem item)

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Integer test = item.getItemId();
    switch (item.getItemId()) {
        case R.id.toggle_item:
          ...
        case R.id.sync_item:
          ...
  return super.onOptionsItemSelected(item);
 }
Run Code Online (Sandbox Code Playgroud)

添加工具栏

 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
 setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)

android toolbar android-actionbar onclicklistener

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