1. 如何查看android studio 中的控件
可以通过将 WebBrowser (WebView)控件托管在应用程序中并使用其 Source 属性或 Navigate(Uri) 方法更改该控件的位置来实现该操作。 警告: 默认情况下,脚本在 WebBrowser 控件中处于禁用状态。如果您想在控件中启用脚本,请将 IsScriptEnabled 属性设置为 true。 以下代码示例显示如何从 ", UriKind", UriKind.Absolute); 或者,也可以使用 WebBrowser(WebView)类的 Navigate(Uri) 方法来实现该目标: Wp8: webBrowser1.Navigate(new Uri("", UriKind.Absolute)); Win8: webView.Navigate(new Uri("", UriKind.Absolute)); 如果您选择调用方法而不是设置属性,那么请记住,如果WebBrowser控件尚不在可视化树中,则会引发 InvalidOperationException。为了避免这个问题,您可以向 Loaded 事件附加一个处理程序,以确保在调用该方法之前此控件位于可视化树中。 .Loaded += (object sender, RoutedEventArgs e) => { webBrowser1.Navigate(new Uri("", UriKind.Absolute)); };webView1.Loaded += (object sender, RoutedEventArgs e) => { webView1.Navigate(new Uri("", UriKind.Absolute)); }; 2. 显示静态 Web 内容 您可以使用 WebBrowser (WebView)控件在应用程序中显示已设置格式的静态内容。例如,开发人员可能希望在应用程序包中包含帮助文本,以便用户可以随时访问。或者,您也可以使用 WebBrowser (WebView)控件显示应用程序已使用 SaveToString() 方法保存到独立存储的静态 Web 内容。 向项目中添加静态内容 向项目中添加静态内容的步骤 1. 使用以下 HTML 代码创建一个名为 readme.htm 的 HTML 文件: Sample Readme Content 2. 在 Visual Studio 中打开一个新的或现有的解决方案。 3. 在“解决方案资源管理器”中,右键单击您项目的名称,单击“添加”,然后单击“现有项”。 4. 导航到 readme.htm 文件的位置,选择该文件,然后单击“添加”。 5. 在“解决方案资源浏览器”中,单击该文件的名称。确认“属性”窗口中的“生成操作”部分。 添加命名空间 在页面后台代码中添加以下资源以包含以下命名空间。例如,如果您对主页使用默认命名约定,则应更新 MainPage.xaml.cs。 using System.IO.IsolatedStorage; using System.IO; using System.Windows.Resources; 添加 WebBrowser(WebView)控件 可以使用工具添加 WebBrowser (WebView)控件,也可以手动添加 WebBrowser (WebView)控件。 使用工具添加 WebBrowser(WebView)控件 使用工具添加 WebBrowser (WebView)控件的步骤 1. 在 Visual Studio 中打开一个新的或现有的解决方案。 2. 查看项目的 XAML 文件时,单击“工具箱”,将 WebBrowser (WebView)控件拖动到设备的图像中。 手动添加 WebBrowser(WebView)控件 在 XAML 中创建 WebBrowser (WebView)控件的步骤 1. 打开将在其中添加 WebBrowser (WebView)控件的页面的 XAML 文件。在“解决方案资源浏览器”中,右键单击该页面的 .xaml 文件(默认情况下,新应用程序的主页名为“MainPage.xaml”),然后选择“打开”。 2. 在 ContentGrid 中添加一个 WebBrowser (WebView)控件。例如: Wp8: Win8: 添加向独立存储中添加文件的代码 修改页面后台代码以包含以下两个函数,这两个函数将帮助向独立存储中添加静态文件。例如,如果您对主页使用默认命名约定,则应更新 MainPage.xaml.cs。 private void SaveFilesToIsoStore() { //These files must match what is included in the application package, //or BinaryStream.Dispose below will throw an exception. string[] files = { "readme.htm" }; IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication(); if (false == isoStore.FileExists(files[0])) { foreach (string f in files) { StreamResourceInfo sr = Application.GetResourceStream(new Uri(f, UriKind.Relative)); using (BinaryReader br = new BinaryReader(sr.Stream)) { byte[] data = br.ReadBytes((int)sr.Stream.Length); SaveToIsoStore(f, data); } } } } private void SaveToIsoStore(string fileName, byte[] data) { string strBaseDir = string.Empty; string delimStr = "/"; char[] delimiter = delimStr.ToCharArray(); string[] dirsPath = fileName.Split(delimiter); //Get the IsoStore. IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication(); //Re-create the directory structure. for (int i = 0; i < dirsPath.Length - 1; i++) { strBaseDir = System.IO.Path.Combine(strBaseDir, dirsPath[i]); isoStore.CreateDirectory(strBaseDir); } //Remove the existing file. if (isoStore.FileExists(fileName)) { isoStore.DeleteFile(fileName); } //Write the file. using (BinaryWriter bw = new BinaryWriter(isoStore.CreateFile(fileName))) { bw.Write(data); bw.Close(); } }
2. android开发 include时如何获取内部控件
android开发include获取内部控件代码:
sublayout.xml
<?xml version="段租1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#505050"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="SubLayout"
/>
<Button
android:id="@+id/mybutton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=" A Button "
/>
</LinearLayout>
mail.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<include android:id="@+id/main1" layout="@layout/sublayout" />
<include android:id="@+id/main2" layout="@layout/sublayout" />
<Button
android:id="@+id/startanotheractivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Start Another Activity "
/>
</LinearLayout>
Android是一种基于皮灶Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,燃燃扮由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。
3. android 怎么在基类里操作控件
我们另外写一个Activity的基类BaseActivity,这个类也是继承自FinalActivity,而且在这个基类里面我们可以实现一些公共的方法,这样其他的Activity继承自我们这个BaseActivity基类,既可以使用FinalActivity里面封装好的方法,也可以使用我们在BaseActivity里面扩展的一些公共的方法。如果我们再抽象一层的话,我们可以把这些公共的方法抽象到一个接口里面,然后我们的BaseActivity实现这个接口,这样也可以实现程序的扩展。
下面贴一些我整理的一些代码
首先是抽象出来的一个Activity的接口
/**
* Activity的支持类接口,主要定义了Activity中常用的功能
*
* @Package com.example.myallutils
*
* TODO
* @author ZhaoKaiQiang
*
* @time 2014年5月7日
*/
public interface IBaseActivity {
/**
* 获取Application对象
*
* @return
*/
public abstract Application getApplication();
/**
* 开启服务
*/
public abstract void startService();
/**
* 停止服务
*/
public abstract void stopService();
/**
* 判断是否有网络连接,若没有,则弹出网络设置对话框,返回false
*
* @return
*/
public abstract boolean validateInternet();
/**
*
* 判断是否有网络连接,没有返回false
*
*/
public abstract boolean hasInternetConnected();
/**
* 退出应用
*/
public abstract void isExit();
/**
* 判断GPS是否已经开启.
*
* @return
*/
public abstract boolean hasLocationGPS();
/**
* 判断基站是否已经开启.
*/
public abstract boolean hasLocationNetWork();
/**
* 检查内存卡.
*/
public abstract void checkMemoryCard();
/**
* 获取进度条.
*
* @return
*/
public abstract ProgressDialog getProgressDialog();
/**
* 返回当前Activity上下文.
*/
public abstract Context getContext();
/**
* 获取当前登录用户的SharedPreferences配置.
*/
public SharedPreferences getLoginUserSharedPre();
/**
* 用户是否在线(当前网络是否重连成功)
*/
public boolean getUserOnlineState();
/**
* 设置用户在线状态 true 在线 false 不在线
*
* @param isOnline
*/
public void setUserOnlineState(boolean isOnline);
/**
*
* 发出Notification的method.
*
* @param iconId
* 图标
* @param contentTitle
* 标题
* @param contentText
* 内容
* @param activity
*/
public void PushNotification(int iconId, String contentTitle,
String contentText, Class<?> activity, String from);
}
下面是对这个接口的实现,是所有Activity的基类
/**
* Activity的基类,实现了IActivitySupport接口
*
* @Package com.example.myallutils
*
* TODO
* @author ZhaoKaiQiang
*
* @time 2014年5月7日
*/
public abstract class BaseActivity extends FinalActivity implements
IBaseActivity {
protected Context mContext = null;
protected SharedPreferences preferences;
protected MyApplication myApplication;
protected ProgressDialog pg = null;
protected NotificationManager notificationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
preferences = getSharedPreferences("TAG", 0);
notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
pg = new ProgressDialog(mContext);
myApplication = (MyApplication) getApplication();
}
/**
* 初始化页面布局
*/
abstract void iniView();
@Override
protected void onStart() {
super.onStart();
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onStop() {
super.onStop();
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public ProgressDialog getProgressDialog() {
return pg;
}
/**
* 在这里开启所有需要开启的服务
*/
@Override
public void startService() {
}
/**
* 在这里关闭所有需要开启的服务
*/
@Override
public void stopService() {
}
/**
* 停止服务并结束所有的Activity退出应用
*/
@Override
public void isExit() {
new AlertDialog.Builder(mContext).setTitle("确定退出吗?")
.setNeutralButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
stopService();
myApplication.exit();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
}).show();
}
/**
* 判断是否有网络连接,没有返回false
*/
@Override
public boolean hasInternetConnected() {
ConnectivityManager manager = (ConnectivityManager) mContext
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (manager != null) {
NetworkInfo network = manager.getActiveNetworkInfo();
if (network != null && network.isConnectedOrConnecting()) {
return true;
}
}
return false;
}
/**
* 判断是否有网络连接,若没有,则弹出网络设置对话框,返回false
*/
@Override
public boolean validateInternet() {
ConnectivityManager manager = (ConnectivityManager) mContext
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (manager == null) {
openWirelessSet();
return false;
} else {
NetworkInfo[] info = manager.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
}
openWirelessSet();
return false;
}
/**
* 判断GPS定位服务是否开启
*/
@Override
public boolean hasLocationGPS() {
LocationManager manager = (LocationManager) mContext
.getSystemService(Context.LOCATION_SERVICE);
if (manager
.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) {
return true;
} else {
return false;
}
}
/**
* 判断基站定位是否开启
*/
@Override
public boolean hasLocationNetWork() {
LocationManager manager = (LocationManager) mContext
.getSystemService(Context.LOCATION_SERVICE);
if (manager
.isProviderEnabled(android.location.LocationManager.NETWORK_PROVIDER)) {
return true;
} else {
return false;
}
}
/**
* 检查内存卡可读
*/
@Override
public void checkMemoryCard() {
if (!Environment.MEDIA_MOUNTED.equals(Environment
.getExternalStorageState())) {
new AlertDialog.Builder(mContext)
.setTitle("检测内存卡")
.setMessage("请检查内存卡")
.setPositiveButton("设置",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.cancel();
Intent intent = new Intent(
Settings.ACTION_SETTINGS);
mContext.startActivity(intent);
}
})
.setNegativeButton("退出",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.cancel();
}
}).create().show();
}
}
/**
* 打开网络设置对话框
*/
public void openWirelessSet() {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(mContext);
dialogBuilder
.setTitle("网络设置")
.setMessage("检查网络")
.setPositiveButton("网络设置",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.cancel();
Intent intent = new Intent(
Settings.ACTION_WIRELESS_SETTINGS);
mContext.startActivity(intent);
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
});
dialogBuilder.show();
}
/**
* 关闭键盘
*/
public void closeInput() {
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (inputMethodManager != null && this.getCurrentFocus() != null) {
inputMethodManager.hideSoftInputFromWindow(this.getCurrentFocus()
.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
/**
*
* 发出Notification
*
* @param iconId
* 图标
* @param contentTitle
* 标题
* @param contentText
* 你内容
* @param activity
*/
@SuppressWarnings("deprecation")
public void PushNotification(int iconId, String contentTitle,
String contentText, Class<?> activity, String to) {
// 创建新的Intent,作为点击Notification留言条时, 会运行的Activity
Intent notifyIntent = new Intent(this, activity);
notifyIntent.putExtra("to", to);
// 创建PendingIntent作为设置递延运行的Activity
PendingIntent appIntent = PendingIntent.getActivity(mContext, 0,
notifyIntent, 0);
/* 创建Notication,并设置相关参数 */
Notification myNoti = new Notification();
// 点击自动消失
myNoti.flags = Notification.FLAG_AUTO_CANCEL;
/* 设置statusbar显示的icon */
myNoti.icon = iconId;
/* 设置statusbar显示的文字信息 */
myNoti.tickerText = contentTitle;
/* 设置notification发生时同时发出默认声音 */
myNoti.defaults = Notification.DEFAULT_SOUND;
/* 设置Notification留言条的参数 */
myNoti.setLatestEventInfo(mContext, contentTitle, contentText,
appIntent);
/* 送出Notification */
notificationManager.notify(0, myNoti);
}
/**
* 返回上下文对象
*/
@Override
public Context getContext() {
return mContext;
}
/**
* 返回登录用户的SharedPreferences对象
*/
@Override
public SharedPreferences getLoginUserSharedPre() {
return preferences;
}
/**
* 获取用户在线状态
*/
@Override
public boolean getUserOnlineState() {
return false;
}
/**
* 设置用户在线状态
*/
@Override
public void setUserOnlineState(boolean isOnline) {
}
}
4. android 一个layout中有很多个子控件,怎么去获得其中的一个控件
一个layout就是一个容器,你可以放一些子控件,当你要操作子控件的时候,你就需要找对应的子控件,再去操作它(操作比如设置字体,颜色,样式等)。
可以通过findViewById()方法 来获取,前提是,你的子控件需要定义一个id,然后在通过该方法来寻找并操作它。
还可以通过findViewWithTag()方法来找到子控件(前提是你第一次找到这个子控件时,并设置一个tag),该方法一般用在activity调用adapter里面填充布局里面的子控件。
5. android 怎么在布局里面获取控件
layout为布局,布局里面可以放任何空间,获取空间可以用findViewById方法获取
android 获取某个布局控件 添加到另一个布局中
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout relativeLayout = (LinearLayout) findViewById(R.id.layout456);
ImageView imgApple2 = new ImageView(this);
imgApple2.setImageResource(R.drawable.ic_launcher);
relativeLayout.addView(imgApple2);
LayoutInflater factorys = LayoutInflater.from(MainActivity.this);
final View textEntryView = factorys.inflate(R.layout.layout1, null);
// LinearLayout linearLayout = (LinearLayout) textEntryView
// .findViewById(R.id.layout1);
// relativeLayout.addView(linearLayout);
EditText editText1 = (EditText) textEntryView
.findViewById(R.id.editText1);
relativeLayout.addView(editText1);
6. android怎么获取 中的控件
在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件代码块,并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。 具体作用:
1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入;
2、对于一个已经载入的界面,就可以使用Activiyt.findViewById()方法来获得其中的界面元素。
LayoutInflater 是一个抽象类,在文档中如下声明:
public abstract class LayoutInflater extends Object
获得 LayoutInflater 实例的三种方式:
1.LayoutInflater inflater = getLayoutInflater(); //调用Activity的getLayoutInflater()
2.LayoutInflater localinflater =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
1. LayoutInflater inflater = LayoutInflater.from(context);
其实,这三种方式本质是相同的,从源码中可以看出:
getLayoutInflater():
Activity 的 getLayoutInflater() 方法是调用 PhoneWindow 的getLayoutInflater()方法,看一下该源代码:
public PhoneWindow(Context context) {
super(context);
mLayoutInflater = LayoutInflater.from(context);
}
可以看出它其实是调用 LayoutInflater.from(context)。
LayoutInflater.from(context):
public static LayoutInflater from(Context context) {
LayoutInflater LayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (LayoutInflater ==null) {
throw new AssertionError("LayoutInflater not found.");
}
return LayoutInflater;
}
可以看出它其实调用 context.getSystemService()。
结论:所以这三种方式最终本质是都是调用的Context.getSystemService()。
inflate 方法 通过 sdk 的 api 文档,可以知道该方法有以下几种过载形式,返回值均是 View 对象,如下:
public View inflate (int resource, ViewGroup root);
3 public View inflate (XmlPullParser parser, ViewGroup root);
4 public View inflate (XmlPullParser parser, ViewGroup root, boolean attachToRoot);
5 public View inflate (int resource, ViewGroup root, boolean attachToRoot);
6
7 LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
8 View view = inflater.inflate(R.layout.custom, (ViewGroup)findViewById(R.id.test));
9 //EditText editText = (EditText)findViewById(R.id.content);
10 // error
EditText editText = (EditText)view.findViewById(R.id.content);
对于上面代码,指定了第二个参数 ViewGroup root,当然你也可以设置为 null 值。
注意:
·inflate方法与 findViewById 方法不同;
·inflater 是用来找 res/layout下的 xml 布局文件,并且实例化;
·findViewById() 是找具体 xml 布局文件中的具体 widget 控件(如:Button、TextView 等)。