How can I show no internet connection message like in facebook app that appears below the tab view.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
You can design this in your XML file and then set its visibility to invisible like this:
<RelativeLayout
android:id="@+id/relativelayout_connection"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:alpha="0.8"
android:background="@android:color/black" >
<TextView
android:id="@+id/textView_noInternetConnection"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_centerInParent="true"
android:text="No Internet Connection."
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/white" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/textView_noInternetConnection"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/textView_noInternetConnection"
android:src="@drawable/warrning" />
</RelativeLayout>
In your code use the broadcast receiver like this:
private BroadcastReceiver mConnReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
boolean noConnectivity = intent.getBooleanExtra(
ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
/*String reason = intent
.getStringExtra(ConnectivityManager.EXTRA_REASON);*/
boolean isFailover = intent.getBooleanExtra(
ConnectivityManager.EXTRA_IS_FAILOVER, false);
@SuppressWarnings("deprecation")
NetworkInfo currentNetworkInfo = (NetworkInfo) intent
.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
// NetworkInfo otherNetworkInfo = (NetworkInfo)
// intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO);
if (noConnectivity){
if(mRelativeLayout != null)
mRelativeLayout.setVisibility(View.VISIBLE);
}
else if (currentNetworkInfo.isConnected()) {
mRelativeLayout.setVisibility(View.GONE);
} else if (isFailover) {
Toast.makeText(getApplicationContext(), "Failover",
Toast.LENGTH_LONG).show();
} else {
mRelativeLayout.setVisibility(View.GONE);
}
}
};