我有一个使用主题属性的状态列表颜色资源,即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/colorBackground是Theme.AppCompat.Light默认值),背景都是红色的.
有没有办法在API 21之前引用颜色选择器中的主题属性?(如果重要,请使用支持库25.3.0)
我需要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) 我有一个 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)