小编Tho*_*ord的帖子

在<API 21中的颜色选择器中使用主题属性

我有一个使用主题属性的状态列表颜色资源,即button_background_tint.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="?attr/colorAccent" android:state_activated="true"/>
    <item android:color="?android:attr/colorBackground"/>
</selector>
Run Code Online (Sandbox Code Playgroud)

并将其应用于我的FloatingActionButton背景色调 app:backgroundTint="@color/button_background_tint"

该按钮在API 21或更高版本中看起来很好,但在API 21之下,无论其状态如何(即使?android:attr/colorBackgroundTheme.AppCompat.Light默认值),背景都是红色的.

有没有办法在API 21之前引用颜色选择器中的主题属性?(如果重要,请使用支持库25.3.0)

android android-layout

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

获取活动网络的接口名称 (API 21)

我需要wlan0在 API 21 中获取活动网络的接口名称(例如)。

在 API 23 中,我可以:

ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
Network activeNetwork = connectivityManager.getActiveNetwork();
if (activeNetwork != null)
{
    LinkProperties linkProperties = connectivityManager.getLinkProperties(activeNetwork);
    String name = linkProperties.getInterfaceName();
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是ConnectivityManager.getActiveNetwork(),仅适用于 API 23 及更高版本。

是否有可接受的与 API 21 兼容的解决方案?

我想出了以下遍历所有网络并进行比较的方法NetworkInfo.toString()(因为按引用或值进行比较不起作用)。它似乎有效,但也感觉像是一个巨大的黑客:

ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
if (activeNetworkInfo != null)
{
    Network[] networks = connectivityManager.getAllNetworks();
    for (Network network : networks)
    {
        NetworkInfo networkInfo = connectivityManager.getNetworkInfo(network);
        if (networkInfo.toString().equals(activeNetworkInfo.toString()))
        {
            LinkProperties linkProperties …
Run Code Online (Sandbox Code Playgroud)

android android-networking

5
推荐指数
0
解决办法
777
查看次数

ViewPager 内的多个 NestedScrollView 不滚动

我有一个 ViewPager,它在每个页面上显示不同的片段。所有片段都有一个 NestedScrollView 作为其根视图。所以本质上是这样的:

第一个_fragment_layout.xml:

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="4dp"/>

</android.support.v4.widget.NestedScrollView>
Run Code Online (Sandbox Code Playgroud)

Second_fragment_layout.xml:

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <!-- Various irrelevant views -->

    </LinearLayout>

</android.support.v4.widget.NestedScrollView>
Run Code Online (Sandbox Code Playgroud)

...ETC。

这些片段是通过我的 FragmentPagerAdapter 类实例化的,如下所示:

private class ViewPagerAdapter extends FragmentPagerAdapter
{
    private final List<String> mFragmentNameList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager fm)
    {
        super(fm);
    }

    @Override
    public Fragment getItem(int position)
    {
        return Fragment.instantiate(getContext(), mFragmentNameList.get(position));
    }

    @Override
    public int getCount()
    {
        return mFragmentNameList.size();
    }

    void add(String fragmentName)
    {
        mFragmentNameList.add(fragmentName);
    }
} …
Run Code Online (Sandbox Code Playgroud)

android android-layout

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