当前位置:首页 » 安卓系统 » androidxml配置

androidxml配置

发布时间: 2022-06-21 11:39:31

Ⅰ android开发 自定义控件怎么在xml文件中配置 尤其是最上面的<LinearLayout >那部分

自已控件就是你先写好你的控件代码,假如你自定义了一个MyButton,然后这个MyButton类你放在com.app包里面,那么你在xml配置代码如下

<com.app.MyButton
android:layout_heigjt........... 属性/>

希望能帮到您

Ⅱ 与安卓xml配置文件,如何按百分比设置按钮图标

1.将button的长度单位设置为"dp"可以在一定程度上解决不同设备上显示比例不同问题
2.android:layout_weight="1"这个属性是根据屏幕的长宽和各个控件的比例设置按比例显示控件的.

Ⅲ android6.0怎样在.xml里配置去掉标题栏

Android开发去除标题栏title其实非常简单,他有两种方法,一种是在代码中添加,另一种是在AndroidManifest.xml中添加:
1、在代码中实现:
在此方法setContentView(R.layout.main)之前加入:
requestWindowFeature(Window.FEATURE_NO_TITLE);标题栏就没有了。
2、在AndroidManifest.xml中实现:
注册Activity时加上如下的一句配置就可以实现。

Ⅳ android 是怎么通过在XML中配置的控件属性得到具体的view对象

我可能表达的不是很清楚,那就拿个具体的例子来说明吧
比如说,在Activity中我们需要用到一个ProgressBar控件,我们一般先在layout下的main.xml中进行配置
Xml代码
<ProgressBar
android:id="@+id/pb1"
android:layout_width="fill_parent"
android:layout_height="20dip"
<span style="color: #ff0000;"> android:indeterminateOnly="false"</span>

android:layout_gravity="center_vertical"
android:progressDrawable="@android:drawable/progress_horizontal"
android:indeterminateDrawable="@android:drawable/progress_indeterminate_horizontal"
android:minHeight="20dip"
android:maxHeight="20dip"
/>

我们看 android:indeterminateOnly="false" 这行代码的
一般我们如果要将在代码中创建一个ProgressBar,但是不通过配置文件得到。
代码如下:
java代码
ProgressBar mProgressBar=new ProgressBar(context);

<span style="color: #ff0000;">mProgressBar.setIndeterminate(false); </span>

mProgressBar.setProgressDrawable(getResources().getDrawable
(android.R.drawable.progress_horizontal));

mProgressBar.setIndeterminateDrawable(getResources().getDrawable
(android.R.drawable.progress_indeterminate_horizontal));

本来我们是希望创建一个普通的能显示进度的横条ProgressBar
但是我们发现progressBar中的进度无法更新。
我们来看进度更新的源代码setProgress():
Java代码
@android.view.RemotableViewMethod
synchronized void setProgress(int progress, boolean fromUser) {
<span style="color: #ff0000;"> if (mIndeterminate) {
return;
}</span>

if (progress < 0) {
progress = 0;
}
if (progress > mMax) {
progress = mMax;
}
if (progress != mProgress) {
mProgress = progress;
refreshProgress(R.id.progress, mProgress, fromUser);
}
}

关键是: if (mIndeterminate) { return; }
原来mIndeterminate 的值为true的话,函数直接返回了,也就是我们不能设置progressBar的进度(mProgress)
现在我们的任务是将mIndeterminate 属性设置为false
但是我们发现 mProgressBar.setIndeterminate(false); 这行代码并没有设置mIndeterminate 属性为false
我们看ProgressBar中的源代码:

Java代码
@android.view.RemotableViewMethod
public synchronized void setIndeterminate(boolean indeterminate) {
<span style="color: #ff0000;"> if ((!mOnlyIndeterminate || !mIndeterminate) && indeterminate != mIndeterminate) {</span>

mIndeterminate = indeterminate;

if (indeterminate) {
// swap between indeterminate and regular backgrounds
mCurrentDrawable = mIndeterminateDrawable;
startAnimation();
} else {
mCurrentDrawable = mProgressDrawable;
stopAnimation();
}
}
}

看这行代码: if ((!mOnlyIndeterminate || !mIndeterminate) && indeterminate != mIndeterminate) {
我们发现当mOnlyIndeterminate 和mIndeterminate 之前都为true时,我们并不能将mIndeterminate 从true改变为false

google后,有人通过反射机制将ProgressBar中的mOnlyIndeterminate 设置为false(具体请看:关于使用代码来创建ProgressBar )

我现在我就在想 既然 ProgressBar中的mOnlyIndeterminate 和mIndeterminate属性都是private,而且都不能通过get和set方法来对其进行操作,那么 android 通过在XML中配置的控件属性,是怎么被转换成真正的java类呢?

求大神解惑!

问题补充

over140 写道
你应该看一下他源码里关于这个的构造函数部分的代码,注意父类里面可能也有代码,他并不是转换成java类,只是读取从XML属性读取想要的参数。

你指的是ProgressBar类中的构造函数吗? 我之前就仔细看了这些东西
ProgressBar中构造函数源码:
Java代码
/**
* Create a new progress bar with range 0...100 and initial progress of 0.
* @param context the application environment
*/
public ProgressBar(Context context) {
this(context, null);
}

public ProgressBar(Context context, AttributeSet attrs) {
this(context, attrs, com.android.internal.R.attr.progressBarStyle);
}

public ProgressBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
mUiThreadId = Thread.currentThread().getId();
initProgressBar();

TypedArray a =
context.obtainStyledAttributes(attrs, R.styleable.ProgressBar, defStyle, 0);

mNoInvalidate = true;

Drawable drawable = a.getDrawable(R.styleable.ProgressBar_progressDrawable);
if (drawable != null) {
drawable = tileify(drawable, false);
setProgressDrawable(drawable);
}

mDuration = a.getInt(R.styleable.ProgressBar_indeterminateDuration, mDuration);

mMinWidth = a.getDimensionPixelSize(R.styleable.ProgressBar_minWidth, mMinWidth);
mMaxWidth = a.getDimensionPixelSize(R.styleable.ProgressBar_maxWidth, mMaxWidth);
mMinHeight = a.getDimensionPixelSize(R.styleable.ProgressBar_minHeight, mMinHeight);
mMaxHeight = a.getDimensionPixelSize(R.styleable.ProgressBar_maxHeight, mMaxHeight);

mBehavior = a.getInt(R.styleable.ProgressBar_indeterminateBehavior, mBehavior);

final int resID = a.getResourceId(
com.android.internal.R.styleable.ProgressBar_interpolator,
android.R.anim.linear_interpolator); // default to linear interpolator
if (resID > 0) {
setInterpolator(context, resID);
}

setMax(a.getInt(R.styleable.ProgressBar_max, mMax));

setProgress(a.getInt(R.styleable.ProgressBar_progress, mProgress));

setSecondaryProgress(
a.getInt(R.styleable.ProgressBar_secondaryProgress, mSecondaryProgress));

drawable = a.getDrawable(R.styleable.ProgressBar_indeterminateDrawable);
if (drawable != null) {
drawable = tileifyIndeterminate(drawable);
setIndeterminateDrawable(drawable);
}

mOnlyIndeterminate = a.getBoolean(
R.styleable.ProgressBar_indeterminateOnly, mOnlyIndeterminate);

mNoInvalidate = false;

setIndeterminate(mOnlyIndeterminate || a.getBoolean(
R.styleable.ProgressBar_indeterminate, mIndeterminate));

a.recycle();
}

看以上代码,发现ProgressBar类并没有使用其父类的构造方法, 它的三个构造方法最终都需要进入到第三个构造方法内,
再看这一句
Java代码
initProgressBar();

其中具体源码如下:
Java代码
private void initProgressBar() {
mMax = 100;
mProgress = 0;
mSecondaryProgress = 0;
mIndeterminate = false;
mOnlyIndeterminate = false;
mDuration = 4000;
mBehavior = AlphaAnimation.RESTART;
mMinWidth = 24;
mMaxWidth = 48;
mMinHeight = 24;
mMaxHeight = 48;
}

看 这两句:
Java代码
mIndeterminate = false;
mOnlyIndeterminate = false;

奇怪 在这个初始化ProgressBar的过程中,明明将mIndeterminate和mOnlyIndeterminate属性设置为false
但是我们初始化后的进度条,显示后同样是不会进度的(图如下)

也就是说 mIndeterminate属性依然是true(具体请看ProgressBar中的setProgress()方法)

继续看构造方法中的其他内容时,发现关键所在:
Java代码
mOnlyIndeterminate = a.getBoolean(
R.styleable.ProgressBar_indeterminateOnly, mOnlyIndeterminate);

mNoInvalidate = false;

setIndeterminate(mOnlyIndeterminate || a.getBoolean(
R.styleable.ProgressBar_indeterminate, mIndeterminate));

这两句将mOnlydeterminate和mIndeterminate属性都设置为true,
看到这里,发现这两句都用到 a 这个对象,a 具体是什么呢?

Java代码
TypedArray a =
context.obtainStyledAttributes(attrs, R.styleable.ProgressBar, defStyle, 0);

那我们能不能通过改变传入 构造函数 的参数 来使 a 发生相应的变化,进而使mOnlyIndeterminate和mIndeterminate属性设置为 true 呢?
再往下深入,发现看的我那是一头雾水,完全找不到方向,所以只得放弃这个猜想。

到最后,我发现 如果要通过正常的java访问机制(当然排除使用反射机制),来操作mOnlyIndeterminate和mIndeterminate属性是不可能的,

你说: 他并不是转换成java类,只是读取从XML属性读取想要的参数。

我们一般是通过findViewById()来根据layout中的XML文件设置的控件属性得到 具体的View控件对象(关于转换成java类,我错了,其实我想说的是怎么得到的这个对象),
这个过程是不是也是通过反射机制来完成的?假如是的话,能给我提供些具体过程的资料呢?

Ⅳ android xml配置文件中一些标签的作用

第一个xml是控件动画的xml,interpolator设置动画播放的速度模型,这个设置的是播放速度逐渐变慢。第一个scale是缩放的动画,ration是动画时间,从0.9倍放大到1倍,pivot是指参照哪个点进行缩放,这个设置的50%是指中心。alpha是改变透明度的动画,从0完全透明到1完全不透明。
第二个xml官方叫法是背景选择器,就是改变按钮之类的控件在选中、获得焦点及通常状态时的背景的,可以是纯色,也可以像你这个似的是drawable中的图片。在选择背景时从上到下找到第一个符合条件的为准,state_之类的是各种条件,pressed按下,focused获得焦点,等等,最后一个item是表示默认条件即之前条件都不满足时的背景。

Ⅵ android xml 怎么设置版本最低和最高

<uses-sdk android:minSdkVersion="4" 
          android:maxSdkVersion="10" />

第一个是最低,第二个是最高。

Ⅶ 怎么在android的xml文件中设置activity的背景

我们都知道在Android中某些功能的实现往往有两种方法:一种是在xml文件中设置相应属性,另一种是用代码实现。同样Android实现全屏显示也可以通过这两种方法实现:
1、在AndroidManifest.xml的配置文件里面的<activity>标签添加属性:
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
2、在Activity的onCreate()方法中的super()和setContentView()两个方法之间加入下面两条语句:
this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//去掉信息栏
上述转自:http://www.cnblogs.com/wader2011/archive/2011/11/19/2255045.html

修改为黑底白字
修改AndroidManifest.xml
把android:theme="@style/AppTheme" 修改为
android:theme="@android:style/Theme.Black“
修改为白底黑字
android:theme="@android:style/Theme.Light“

Ⅷ 在android xml配置文件怎么配置 checkbox 组

在layout下的xml中连续定义
<LinearLayout android:layout_width="wrap_content"........>
<CheckBox android:....../>
<CheckBox android:....../>
<CheckBox android:....../>
</LinearLayout>

Ⅸ android 怎么读取在androidmanifest.xml中配置xml文件

一、关于AndroidManifest.xmlAndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation(安全控制和测试)二、AndroidManifest.xml结构 三、各个节点的详细介绍 上面就是整个am(androidManifest).xml的结构,下面以外向内开始阐述~~1、第一层():(属性)A、xmlns:android定义android命名空间,一般为/apk/res/android,这样使得Android中各种标准属性能在文件中使用,提供了大部分元素中的数据。B、package指定本应用内java主程序包的包名,它也是一个应用进程的默认名称android 怎么读取在androidmanifest.xml中配置xml文件

Ⅹ android中怎么在AndroidManifest.xml文件中配置Service

第一个name是你service位置的,包括完整的包名和service名。如果包名就是你定义的程序包名,也就是和gen目录下那个包的名字一样的话,直接".service名"就可以了。第二个name是你调用service时intent.setAction();中的参数,这个你可以自己随便定义的。

热点内容
上亿电控花样机所有密码是多少 发布:2024-05-13 22:11:13 浏览:617
安卓哪里可以买游戏 发布:2024-05-13 21:46:17 浏览:420
lua安装linux 发布:2024-05-13 21:45:25 浏览:232
希沃还原卡密码是多少 发布:2024-05-13 21:44:23 浏览:833
如何建立网盘服务器 发布:2024-05-13 21:36:09 浏览:152
mysql解压后 发布:2024-05-13 21:05:43 浏览:342
mac如何给文件夹加密 发布:2024-05-13 20:25:50 浏览:352
路由器和远程访问 发布:2024-05-13 19:49:44 浏览:213
ftp五个转换步骤是什么 发布:2024-05-13 19:45:15 浏览:835
页面显示源码 发布:2024-05-13 19:27:42 浏览:741