制作用户定义的UI

时间:2010-07-08 13:31:52

标签: android user-interface

如何制作自己定义属性的UI?

1 个答案:

答案 0 :(得分:4)

有三种方法可以做到:

1。使用样式

您可以通过在res/values目录中创建XML文件来定义自己的样式。因此,假设您想要使用红色和粗体文本,然后使用以下内容创建文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="MyRedTheme" parent="android:Theme.Light">
    <item name="android:textAppearance">@style/MyRedTextAppearance</item>
  </style>
  <style name="MyRedTextAppearance" parent="@android:style/TextAppearance">
    <item name="android:textColor">#F00</item>
    <item name="android:textStyle">bold</item>
  </style>
</resources>

您可以按照自己的意愿命名,例如res/values/red.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
 style="@style/MyRedTheme"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="This is red, isn't it?"
    />
</LinearLayout>

如需进一步参考,请阅读以下文章:Understanding Android Themes and Styles

2。使用自定义类

这是实现此目的的另一种可能方式,它将提供您自己的TextView,将文本颜色始终设置为您想要的任何内容;例如:

import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.widget.TextView;
public class RedTextView extends TextView{
 public RedTextView(Context context, AttributeSet attrs) {
  super(context, attrs);
  setTextColor(Color.RED);
 }
}

然后,您只需将其视为XML文件中的正常TextView

<?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"
    >
<org.example.RedTextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="This is red, isn't it?"
    />
</LinearLayout>

3。创建主题

我正在复制Steve Pomeroy给出的示例:

创建styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyTheme" parent="android:Theme">
    <item name="android:textViewStyle">@style/MyTextViewStyle</item>
</style>

<style name="MyTextViewStyle" parent="@android:style/Widget.TextView">
    <item name="android:textColor">#F00</item>
    <item name="android:textStyle">bold</item>
</style>
</resources>

然后在AndroidManifest.xml中将该主题应用于您的应用程序:

<application […] android:theme="@style/MyTheme">

所有文本视图都将默认为MyTextViewStyle中定义的样式(在本例中为粗体和红色)!


您是否使用一种或另一种选择取决于您的需求。如果您唯一想做的就是修改外观,那么最好的方法就是第一个。另一方面,如果你想改变外观并为你的小部件添加一些新功能,那么第二个就是要走的路。