public TiUIScrollableView(ScrollableViewProxy proxy, TiBaseActivity activity) { super(proxy); // activity.addConfigurationChangedListener(this); mViews = new ArrayList<TiViewProxy>(); viewsLock = new Object(); buildViewPager(activity); TiCompositeLayout.LayoutParams params = new LayoutParams(); params.optionWidth = new TiDimension("100%", TiDimension.TYPE_WIDTH); params.optionHeight = new TiDimension("100%", TiDimension.TYPE_HEIGHT); mPager.setLayoutParams(params); mContainer = new TiViewPagerLayout(activity) { @Override public boolean dispatchTouchEvent(MotionEvent event) { if (touchPassThrough == true) return false; return super.dispatchTouchEvent(event); } }; mContainer.addView((View) mPager, params); mPagingControl = buildPagingControl(activity); mContainer.addView(mPagingControl, buildFillLayoutParams()); setNativeView(mContainer); }
public TiUIActionBarTabGroup(TabGroupProxy proxy, TiBaseActivity activity) { super(proxy, activity); tabActivity = new WeakReference<TiBaseActivity>(activity); activity.addOnLifecycleEventListener(this); // Setup the action bar for navigation tabs. actionBar = activity.getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); actionBar.setDisplayShowTitleEnabled(true); swipeable = TiConvert.toBoolean(proxy.getProperty(TiC.PROPERTY_SWIPEABLE), true); tabGroupPagerAdapter = new TabGroupPagerAdapter(((ActionBarActivity) activity).getSupportFragmentManager()); tabGroupViewPager = (new ViewPager(proxy.getActivity()) { @Override public boolean onTouchEvent(MotionEvent event) { return swipeable ? super.onTouchEvent(event) : false; } @Override public boolean onInterceptTouchEvent(MotionEvent event) { return swipeable ? super.onInterceptTouchEvent(event) : false; } }); tabGroupViewPager.setAdapter(tabGroupPagerAdapter); tabGroupViewPager.setOnPageChangeListener( new ViewPager.OnPageChangeListener() { @Override public void onPageSelected(int position) { // on changing the page simply select the tab actionBar.setSelectedNavigationItem(position); } @Override public void onPageScrolled(int arg0, float arg1, int arg2) {} @Override public void onPageScrollStateChanged(int arg0) {} }); TiCompositeLayout.LayoutParams params = new TiCompositeLayout.LayoutParams(); params.autoFillsHeight = true; params.autoFillsWidth = true; ((ViewGroup) activity.getLayout()).addView(tabGroupViewPager, params); setNativeView(tabGroupViewPager); }
private void setPageOffset(Object value) { if (verticalLayout) { TiCompositeLayout.LayoutParams params = (LayoutParams) mPager.getLayoutParams(); params.optionHeight = TiConvert.toTiDimension(TiConvert.toString(value), TiDimension.TYPE_TOP); mPager.setLayoutParams(params); } else { TiCompositeLayout.LayoutParams params = (LayoutParams) mPager.getLayoutParams(); params.optionWidth = TiConvert.toTiDimension(TiConvert.toString(value), TiDimension.TYPE_LEFT); mPager.setLayoutParams(params); } }
private void setPageWidth(Object value) { if (verticalLayout) { TiCompositeLayout.LayoutParams params = (LayoutParams) mPager.getLayoutParams(); params.optionHeight = TiConvert.toTiDimension(TiConvert.toString(value), TiDimension.TYPE_HEIGHT); mPager.setLayoutParams(params); } else { TiCompositeLayout.LayoutParams params = (LayoutParams) mPager.getLayoutParams(); params.optionWidth = TiConvert.toTiDimension(TiConvert.toString(value), TiDimension.TYPE_WIDTH); mPager.setLayoutParams(params); } ((ViewGroup) nativeView).setClipChildren(false); hardwaredDisabled = true; disableHWAcceleration(nativeView); // we ll reenable it later because of a glitch }
protected void refreshOldStyleRow() { TableViewRowProxy rp = getRowProxy(); if (!rp.hasProperty(TiC.PROPERTY_TOUCH_ENABLED)) { rp.setProperty(TiC.PROPERTY_TOUCH_ENABLED, false); } if (views == null) { views = new ArrayList<TiUIView>(); views.add(new TiUILabel(rp)); } TiUILabel t = (TiUILabel) views.get(0); t.setProxy(rp); t.processProperties(filterProperties(rp.getProperties())); View v = t.getNativeView(); if (v.getParent() == null) { TiCompositeLayout.LayoutParams params = (TiCompositeLayout.LayoutParams) t.getLayoutParams(); params.optionLeft = new TiDimension(5, TiDimension.TYPE_LEFT); params.optionRight = new TiDimension(5, TiDimension.TYPE_RIGHT); params.autoFillsWidth = true; content.addView(v, params); } }
private TiCompositeLayout.LayoutParams buildFillLayoutParams() { TiCompositeLayout.LayoutParams params = new TiCompositeLayout.LayoutParams(); params.autoFillsHeight = true; params.autoFillsWidth = true; return params; }
public TiUIWebView(TiViewProxy proxy) { super(proxy); this.isFocusable = true; TiWebView webView = isHTCSenseDevice() ? new TiWebView(proxy.getActivity()) : new NonHTCWebView(proxy.getActivity()); webView.setVerticalScrollbarOverlay(true); WebSettings settings = webView.getSettings(); settings.setUseWideViewPort(true); settings.setJavaScriptEnabled(true); settings.setSupportMultipleWindows(true); settings.setJavaScriptCanOpenWindowsAutomatically(true); settings.setAllowFileAccess(true); settings.setDomStorageEnabled( true); // Required by some sites such as Twitter. This is in our iOS WebView too. File path = TiApplication.getInstance().getFilesDir(); if (path != null) { settings.setDatabasePath(path.getAbsolutePath()); settings.setDatabaseEnabled(true); } File cacheDir = TiApplication.getInstance().getCacheDir(); if (cacheDir != null) { settings.setAppCacheEnabled(true); settings.setAppCachePath(cacheDir.getAbsolutePath()); } // enable zoom controls by default boolean enableZoom = true; if (proxy.hasProperty(TiC.PROPERTY_ENABLE_ZOOM_CONTROLS)) { enableZoom = TiConvert.toBoolean(proxy.getProperty(TiC.PROPERTY_ENABLE_ZOOM_CONTROLS)); } settings.setBuiltInZoomControls(enableZoom); settings.setSupportZoom(enableZoom); if (TiC.JELLY_BEAN_OR_GREATER) { settings.setAllowUniversalAccessFromFileURLs( true); // default is "false" for JellyBean, TIMOB-13065 } // We can only support webview settings for plugin/flash in API 8 and higher. if (Build.VERSION.SDK_INT > Build.VERSION_CODES.ECLAIR_MR1) { initializePluginAPI(webView); } boolean enableJavascriptInterface = TiConvert.toBoolean(proxy.getProperty(TiC.PROPERTY_ENABLE_JAVASCRIPT_INTERFACE), true); chromeClient = new TiWebChromeClient(this); webView.setWebChromeClient(chromeClient); client = new TiWebViewClient(this, webView); webView.setWebViewClient(client); if (Build.VERSION.SDK_INT > 16 || enableJavascriptInterface) { client.getBinding().addJavascriptInterfaces(); } webView.client = client; if (proxy instanceof WebViewProxy) { WebViewProxy webProxy = (WebViewProxy) proxy; String username = webProxy.getBasicAuthenticationUserName(); String password = webProxy.getBasicAuthenticationPassword(); if (username != null && password != null) { setBasicAuthentication(username, password); } webProxy.clearBasicAuthentication(); } TiCompositeLayout.LayoutParams params = getLayoutParams(); params.autoFillsHeight = true; params.autoFillsWidth = true; setNativeView(webView); }
@Override protected void onLayout(boolean changed, int l, int t, int r, int b) { int count = getChildCount(); int left = 0; int top = 0; int right = r - l; int bottom = b - t; if (needsSort) { if (count > 1) { // No need to sort one item. viewSorter.clear(); for (int i = 0; i < count; i++) { View child = getChildAt(i); TiCompositeLayout.LayoutParams params = (TiCompositeLayout.LayoutParams) child.getLayoutParams(); params.index = i; viewSorter.add(child); } detachAllViewsFromParent(); int i = 0; for (View child : viewSorter) { attachViewToParent(child, i++, child.getLayoutParams()); } } needsSort = false; } int[] horizontal = new int[2]; int[] vertical = new int[2]; int currentHeight = 0; for (int i = 0; i < count; i++) { View child = getChildAt(i); TiCompositeLayout.LayoutParams params = (TiCompositeLayout.LayoutParams) child.getLayoutParams(); if (child.getVisibility() != View.GONE) { // Dimension is required from Measure. Positioning is determined here. int childMeasuredWidth = child.getMeasuredWidth(); int childMeasuredHeight = child.getMeasuredHeight(); computePosition( params.optionLeft, params.optionRight, childMeasuredWidth, left, right, horizontal); if (this.vertical) { computeVerticalLayoutPosition( currentHeight, params.optionTop, params.optionBottom, childMeasuredHeight, top, bottom, vertical); } else { computePosition( params.optionTop, params.optionBottom, childMeasuredHeight, top, bottom, vertical); } if (DBG) { Log.d( TAG, child.getClass().getName() + " {" + horizontal[0] + "," + vertical[0] + "," + horizontal[1] + "," + vertical[1] + "}"); } int newWidth = horizontal[1] - horizontal[0]; int newHeight = vertical[1] - vertical[0]; if (newWidth != childMeasuredWidth || newHeight != childMeasuredHeight) { int newWidthSpec = MeasureSpec.makeMeasureSpec(newWidth, MeasureSpec.EXACTLY); int newHeightSpec = MeasureSpec.makeMeasureSpec(newHeight, MeasureSpec.EXACTLY); child.measure(newWidthSpec, newHeightSpec); } child.layout(horizontal[0], vertical[0], horizontal[1], vertical[1]); currentHeight += newHeight; if (params.optionTop != NOT_SET) { currentHeight += params.optionTop; } } } }