小编Mac*_*ver的帖子

导航抽屉项目图标不显示原始颜色

我正在尝试在我的导航抽屉菜单中的项目旁边显示一个图标,但由于某种原因,图标始终显示为灰色而不是原始颜色(棕色).有没有办法防止这种情况发生,以显示图标的原始颜色?

MainActivity.java

public class MainActivity extends AppCompatActivity {

    private DrawerLayout mDrawerLayout;

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

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        if (navigationView != null) {
            setupDrawerContent(navigationView);
        }
    }

    private void setupDrawerContent(NavigationView navigationView) {
        navigationView.setNavigationItemSelectedListener(
                new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem) {
                mDrawerLayout.closeDrawers();

                return true;
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

drawer_view.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:title="Section">
        <menu>
            <item
                android:id="@+id/navigation_item_1"
                android:icon="@drawable/ic_browncircle"
                android:title="Sub item 1" />
        </menu>
    </item>
</menu>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

java xml android android-support-library

134
推荐指数
3
解决办法
7万
查看次数

RecyclerView GridLayoutManager:如何自动检测跨度计数?

使用新的GridLayoutManager:https://developer.android.com/reference/android/support/v7/widget/GridLayoutManager.html

它需要一个明确的跨度计数,所以问题现在变成:你怎么知道每行有多少"跨度"?毕竟这是一个网格.根据测量的宽度,RecyclerView可以容纳多个跨距.

使用旧的GridView,您只需设置"columnWidth"属性,它将自动检测适合的列数.这基本上是我想要为RecyclerView复制的:

  • 在上添加OnLayoutChangeListener RecyclerView
  • 在此回调中,膨胀单个"网格项"并进行测量
  • spanCount = recyclerViewWidth/singleItemWidth;

这似乎是很常见的行为,所以有一种我没有看到的更简单的方法吗?

android android-gridlayout gridlayoutmanager android-recyclerview

101
推荐指数
6
解决办法
8万
查看次数

无法将Action Provider转换为共享操作提供程序

以下是我的活动的代码

    import android.app.Activity;
    import android.os.Bundle;
    import android.support.v7.widget.ShareActionProvider;
    import android.view.Menu;
    import android.view.MenuItem;

    public class MainActivity extends Activity {
    private ShareActionProvider shareAction;

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        MenuItem item = menu.getItem(R.id.menu_settings);
        shareAction = (ShareActionProvider) item.getActionProvider();
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是从ActionProvider到ShareActionProvider存在一个强制转换错误.为什么它如下所示是activity_menu.xml

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

<item
    android:id="@+id/menu_settings"
    android:orderInCategory="100"
    android:showAsAction="always"
    android:title="@string/menu_settings"
    android:actionProviderClass="android.widget.ShareActionProvider"
    />

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

android shareactionprovider

59
推荐指数
3
解决办法
2万
查看次数

Android Studio - 平板电脑模拟器未显示正确的分辨率

刚刚创建了一个Nexus 10模拟器,但是当我启动它时,会显示错误的分辨率.当它应该显示为2560 x 1600时,它一直显示为800 x 1280.有谁知道地球上发生了什么以及如何解决这个问题?

错误的资源 正确的资源 Nexus 10仿真器中的错误res

java android adt nexus-10 android-studio

45
推荐指数
1
解决办法
9589
查看次数

设置Android ActionBar颜色时出现"字段可以转换为局部变量"消息

设置操作栏的颜色后,actionBarColorin private String actionBarColor = "#B36305";会突出显示为黄色,并且由于某种原因会返回警告.可以做些什么来摆脱这个警告?

字段可以转换为局部变量

public class MainActivity extends AppCompatActivity {

    private String actionBarColor = "#B36305";

    private int getFactorColor(int color, float factor) {
        float[] hsv = new float[3];
        Color.colorToHSV(color, hsv);
        hsv[2] *= factor;
        color = Color.HSVToColor(hsv);
        return color;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.fragment_activity_main);

        ActionBar actionBar = getSupportActionBar();
        if(actionBar != null) {
            actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(actionBarColor)));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java android android-appcompat android-actionbar android-support-library

31
推荐指数
2
解决办法
4万
查看次数

从API 27中不推荐使用FragmentStatePagerAdapter

FragmentStatePagerAdapter已从API 27中弃用。的替代方案是FragmentStatePagerAdapter什么?

private class MainPagerAdapter extends FragmentStatePagerAdapter {

        MainPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            Fragment result = new DummyFragment();
             return result;
        }

        @Override
        public int getCount() {
            return 5;
        }

    }
Run Code Online (Sandbox Code Playgroud)

上面的代码显示FragmentStatePagerAdaptergetItemsuper(fm);已弃用

android android-support-library fragmentstatepageradapter

29
推荐指数
6
解决办法
2万
查看次数

更改向上箭头的颜色后标记为私人警告

在操作栏中为后退箭头定义自定义颜色后,将返回警告.可以做些什么来摆脱这个警告?

        final Drawable upArrow = ContextCompat.getDrawable(this, R.drawable.abc_ic_ab_back_mtrl_am_alpha);
        upArrow.setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
        actionBar.setHomeAsUpIndicator(upArrow);
Run Code Online (Sandbox Code Playgroud)

资源@ drawable/abc_ic_ab_back_mtrl_am_alpha在com.android.support:appcompat-v7中标记为私有

java android android-actionbar android-support-library android-studio

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

在片段中绘制多个对象图

我想要绘制一个图表,就像附加的图像一样,但是我在绘制右边的红色垂直矩形以及将其他对象放在顶部时遇到了问题.最大的问题是与Android设备的众多不同屏幕尺寸有关.我完全理解我在这个过程中想要实现的目标,其中包括以下目标.所有帮助将受到高度赞赏.

  • 屏幕两侧有1个红色矩形(右侧我不知道如何在那里画画)
  • 红色垂直矩形之间的7个灰色框需要在宽度上相等
  • 黑色垂直线需要位于矩形之间,就像上图中一样
  • 显示数字的文本框需要位于每个灰色矩形的中心以及小红色矩形
  • 我也想在将来重复使用图表,这样我就可以随时用红色或黑色填充小盒子

在此输入图像描述

布局

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

        <my.package.name.ComplexDiagram
            android:layout_width="match_parent"
            android:layout_height="65dp"
            android:layout_centerVertical="true"
            />
    </RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

Java的

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;

public class ComplexDiagram extends View {


    private int measuredWidth, measuredHeight;
    private Paint mGreyRectPaint, mBlackLinePaint, mRedRectPaint;
    private RectF mGreyRect, mBlackLineF, mRedRectF;


    public ComplexDiagram(Context context) {
        super(context);
        init(context, null, 0);
    }

    public ComplexDiagram(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context, attrs, 0);
    }

    public ComplexDiagram(Context context, AttributeSet attrs, …
Run Code Online (Sandbox Code Playgroud)

java android android-shape

11
推荐指数
1
解决办法
252
查看次数

搜索视图关闭图标出现禁用而不是白色

每当我在搜索视图中输入时,关闭按钮(X)似乎由于某种原因而被禁用,而不是以白色显示.如何解决此错误以使其显示为白色?

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.menu_search_list, menu);
    MenuItem item = menu.findItem(R.id.action_search);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
    searchView.setOnQueryTextListener(this);
    searchView.setQueryHint(getResources().getString(R.string.station_search_hint));
}
Run Code Online (Sandbox Code Playgroud)

menu_search_list.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" >
    <item android:id="@+id/action_search"
        android:icon="@drawable/ic_action_search_light"
        android:title="@string/action_search"
        android:orderInCategory="100"
        app:showAsAction="always"
        app:actionViewClass="android.support.v7.widget.SearchView"/>
</menu>
Run Code Online (Sandbox Code Playgroud)

xml android android-actionbar android-search

10
推荐指数
1
解决办法
3864
查看次数

FragmentPagerAdapter已弃用

由于API 27 FragmentPagerAdapter已弃用。最好的替代方法是什么?

就我而言,我知道super(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)需要使用类似的东西,但是我不知道代码需要放在哪里。

我在课堂上得到了这些进口:

import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
Run Code Online (Sandbox Code Playgroud)

FragmentPagerAdapterclass MyViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager){被划掉。

class MyViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager){
        private val fragmentList : MutableList<androidx.fragment.app.Fragment> = ArrayList()
        private val titleList : MutableList<String> = ArrayList()

        override fun getItem(position: Int): androidx.fragment.app.Fragment {
            return fragmentList[position]
        }

        override fun getCount(): Int {
            return fragmentList.size
        }

        fun addFragment(fragment: androidx.fragment.app.Fragment, title: String){
            fragmentList.add(fragment)
            titleList.add(title)
        }

        override fun getPageTitle(position: Int): CharSequence? {
            return titleList[position]
        }
    }
Run Code Online (Sandbox Code Playgroud)

android android-viewpager kotlin fragmentpageradapter fragmentmanager

10
推荐指数
4
解决办法
4338
查看次数