Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 自定义微调器在ActionBar图标中不显示下拉列表_Android_Android Actionbar_Android Arrayadapter_Android Spinner_Android Menu - Fatal编程技术网

Android 自定义微调器在ActionBar图标中不显示下拉列表

Android 自定义微调器在ActionBar图标中不显示下拉列表,android,android-actionbar,android-arrayadapter,android-spinner,android-menu,Android,Android Actionbar,Android Arrayadapter,Android Spinner,Android Menu,试图让我的自定义微调器仅使用ImageView(显示图标可绘制列表)工作。我想我的自定义适配器代码是正确的,onCreateOptionsMenu()代码是正确的,但不是。共享功能的图标显示在操作栏中,但当我触摸它时,微调器不会下拉它应该显示的菜单。有什么不对劲吗?这个目标是独一无二的,因为它不仅仅是一个自定义微调器(很容易找到教程)或只是一个ActionBar图标放置(也很容易),而是将两者结合起来,这很难在上面找到资源 PhotoViewerActivity.java package or

试图让我的自定义微调器仅使用ImageView(显示图标可绘制列表)工作。我想我的自定义适配器代码是正确的,
onCreateOptionsMenu()
代码是正确的,但不是。共享功能的图标显示在操作栏中,但当我触摸它时,微调器不会下拉它应该显示的菜单。有什么不对劲吗?这个目标是独一无二的,因为它不仅仅是一个自定义微调器(很容易找到教程)或只是一个ActionBar图标放置(也很容易),而是将两者结合起来,这很难在上面找到资源

PhotoViewerActivity.java

package org.azure_simbiosys.cutecollection.phototab;

import android.content.Context;
import android.content.pm.ActivityInfo;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.Spinner;

import org.azure_simbiosys.R;

public class PhotoViewerActivity extends ActionBarActivity
                                implements AdapterView.OnItemSelectedListener{

    private ArrayAdapter spinnerAdapter;
    int[] iconList = {R.drawable.ic_facebook, R.drawable.ic_twitter, R.drawable.ic_sms};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_photo_viewer);

        // Shows the up carat near app icon in ActionBar
        getSupportActionBar().setDisplayUseLogoEnabled(false);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        ImageView photoView = (ImageView)findViewById(R.id.photo_display);

        // gets the single bitmap image from the array of bytes
        Bundle extras = getIntent().getExtras();
        byte[] byteArray = extras.getByteArray("photo");
        Bitmap bm = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

        // sets device orientation based on the image orientation
        if (bm.getWidth() > bm.getHeight()){
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        } else
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

        // sets bitmap into your ImageView
        photoView.setImageBitmap(bm);


    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        // Facebook, Twitter, SMS code here

    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }

    private class ShareSpinnerAdapter extends ArrayAdapter {

        // constructor
        public ShareSpinnerAdapter (Context context, int iconResourceId){

            super(context, iconResourceId);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent){
            View itemView = convertView;

            return getCustomView(position, convertView, parent);
        }

        @Override
        public View getDropDownView(int position, View convertView,ViewGroup parent) {

            return getCustomView(position, convertView, parent);
        }

        public View getCustomView(int position, View convertView, ViewGroup parent)
        {

            LayoutInflater inflater=getLayoutInflater();
            View row=inflater.inflate(R.layout.share_spinner_row, parent, false);

            ImageView icon=(ImageView)row.findViewById(R.id.spinner_icon);
            icon.setImageResource(iconList[position]);

            return row;
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu items for use in the action bar
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_share, menu);

        Spinner shareSpinner = (Spinner) menu.findItem(R.id.action_social_share).getActionView();

        spinnerAdapter = new ShareSpinnerAdapter(this, R.layout.share_spinner_row);
        spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        shareSpinner.setAdapter(spinnerAdapter);

        shareSpinner.setBackground(getResources().getDrawable(R.drawable.ic_action_social_share));

        // add listener
        shareSpinner.setOnItemSelectedListener(this);

        return super.onCreateOptionsMenu(menu);
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Makes the UP caret go back to the previous fragment MakeCuteHome
        switch (item.getItemId()) {
            case android.R.id.home:
                android.app.FragmentManager fm = getFragmentManager();
                fm.popBackStack();
                finish();
                return true;
            case R.id.action_social_share:


                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}
package org.azure_simbiosys.cutecollection.phototab;
导入android.content.Context;
导入android.content.pm.ActivityInfo;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.os.Bundle;
导入android.support.v7.app.ActionBarActivity;
导入android.view.LayoutInflater;
导入android.view.Menu;
导入android.view.MenuInflater;
导入android.view.MenuItem;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.ImageView;
导入android.widget.Spinner;
导入org.azure_simbiosys.R;
公共类PhotoViewerActivity扩展了ActionBarActivity
实现AdapterView.OnItemSelectedListener{
专用阵列适配器;
int[]iconList={R.drawable.ic_facebook,R.drawable.ic_twitter,R.drawable.ic_sms};
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u photo\u viewer);
//在ActionBar中显示应用程序图标附近的上克拉
getSupportActionBar().setDisplayUseLogoEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
ImageView photoView=(ImageView)findViewById(R.id.photo\u显示);
//从字节数组中获取单个位图图像
Bundle extras=getIntent().getExtras();
byte[]byteArray=extras.getByteArray(“照片”);
位图bm=BitmapFactory.decodeByteArray(byteArray,0,byteArray.length);
//基于图像方向设置设备方向
如果(bm.getWidth()>bm.getHeight()){
setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u横向);
}否则
setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u Picture);
//将位图设置到ImageView中
photoView.setImageBitmap(bm);
}
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
//Facebook,Twitter,短信代码在这里
}
@凌驾
未选择公共无效(AdapterView父级){
}
私有类SharesInnerAdapter扩展了ArrayAdapter{
//建造师
public SharesInGeneralAdapter(上下文,int-iconResourceId){
超级(上下文,iconResourceId);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图项视图=转换视图;
返回getCustomView(位置、转换视图、父级);
}
@凌驾
公共视图getDropDownView(int位置、视图转换视图、视图组父视图){
返回getCustomView(位置、转换视图、父级);
}
公共视图getCustomView(int位置、视图转换视图、视图组父视图)
{
LayoutInflater充气机=getLayoutInflater();
视图行=充气器。充气(R.layout.share\u spinner\u行,父项,false);
ImageView图标=(ImageView)row.findViewById(R.id.spinner\u图标);
icon.setImageResource(iconList[position]);
返回行;
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单项充气,以便在操作栏中使用
MenuInflater充气机=getMenuInflater();
充气机。充气(右菜单。菜单共享,菜单);
微调器共享微调器=(微调器)菜单.findItem(R.id.action\u social\u share).getActionView();
spinnerAdapter=新的ShareSpinnerAdapter(此,R.layout.share\u微调器\u行);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
setAdapter(spinnerAdapter);
setBackground(getResources().getDrawable(R.drawable.ic_action_social_share));
//添加侦听器
setOnItemSelectedListener(此);
返回super.onCreateOptions菜单(菜单);
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//使上一个插入符号返回到上一个片段MakeCutteHome
开关(item.getItemId()){
案例android.R.id.home:
android.app.FragmentManager fm=getFragmentManager();
fm.popbackbackstack();
完成();
返回true;
案例R.id.action\u social\u share:
返回true;
违约:
返回super.onOptionsItemSelected(项目);
}
}
}
菜单共享.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <!-- Share, should appear as action button -->
    <item android:id="@+id/action_social_share"
        android:icon="@drawable/ic_action_social_share"
        android:title="Share"
        android:actionLayout="@layout/action_share"
        app:showAsAction="always"
        app:actionViewClass="android.widget.Spinner"/>

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

    <Spinner
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/share_spinner"
        android:layout_gravity="center_horizontal"
        android:spinnerMode="dropdown"/>
</LinearLayout>

action\u share.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <!-- Share, should appear as action button -->
    <item android:id="@+id/action_social_share"
        android:icon="@drawable/ic_action_social_share"
        android:title="Share"
        android:actionLayout="@layout/action_share"
        app:showAsAction="always"
        app:actionViewClass="android.widget.Spinner"/>

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

    <Spinner
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/share_spinner"
        android:layout_gravity="center_horizontal"
        android:spinnerMode="dropdown"/>
</LinearLayout>

共享微调器行

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

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/spinner_icon"
        android:layout_gravity="center_horizontal" />
</LinearLayout>

如果要在操作栏上共享图标,请将其用作微调器。。。然后在menu_share.xml文件中创建项标记的子项,如

 <item android:id="@+id/menu"
      android:icon="@drawable/menu"
      android:title="menu"

      android:showAsAction="always" >


      <menu>

    <item
        android:id="@+id/Login"
        android:title="Login"
        android:icon="@drawable/contact" />
    <item
        android:id="@+id/share"
        android:title="Share"
        android:icon="@drawable/share" />
     <item
        android:id="@+id/like"
        android:title="Like"
        android:icon="@drawable/favourite" />
</menu>

    </item>


这只是一个例子……试试这个谢谢,我试过了,但家长是红色的。它说元素项必须声明。你把父项也放在菜单标签里了吗?我试过了,但我不确定为什么会这样,你能解释一下吗?我只需要一个项目(共享)和你把3个项目。另外,我要为父项图标使用什么?我在共享标签中已经有了所需的图标。这对我来说毫无意义。谢谢,你想什么时候来