使用Drawable中默认的12种颜色,得到屏幕的大小,样式

本文介绍如何在Android应用中设置TextView的颜色与样式,包括从资源文件加载字符串、获取屏幕尺寸、定义颜色及样式,并展示了如何在代码中实现这些功能。

 代码:

package com.oyzz.ch3_3;

import android.app.Activity;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.widget.TextView;

public class Ch3_3 extends Activity {
    /** Called when the activity is first created. */
 
 //声明两个对象
 private TextView tv1 = null;
 private TextView tv2 = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tv1 = (TextView)findViewById(R.id.tv1);
       
        //getString()从配置文件里取得字符串,值得注意的就是对于""要记得进行转义哦,呵呵
        String str = getString(R.string.str);
       
        //得到屏幕的大小
        DisplayMetrics dm = new DisplayMetrics();//创建DisplayMetrics对象
        getWindowManager().getDefaultDisplay().getMetrics(dm);//得到后存放到DisplayMetrics对象
        String str1 = dm.widthPixels +"x"+dm.heightPixels;//得到宽度和高度
       
        tv1.setText("我是应用Drawable背景色的戴维文本"+str+"-->"+str1);
        //得到color.xml中定义的颜色
        Resources rs = getBaseContext().getResources();
        Drawable dw = rs.getDrawable(R.drawable.tv1);
        tv1.setBackgroundDrawable(dw);//设置背景色
       
        tv2 = (TextView)findViewById(R.id.tv2);
        tv2.setTextColor(Color.MAGENTA);//使用Color类里的颜色(系统默认有12种)
       
    }
}

 

 

main.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:id = "@+id/tv1"
    style="@style/tv1"
    />
<TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id = "@+id/tv2"
    android:text="@string/hello"
    style="@style/tv2"
    />   
</LinearLayout>

 

 

color.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<drawable name="tv1">#808080FF</drawable>
</resources>

 

strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">/"使用graphics.Color设置文本颜色/"</string>
    <string name="str">我是配置文件strings.xml里的字符串?</string>
    <string name="app_name">Ch3_3</string>
</resources>

 

style.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="tv1">
      <item name="android:textSize">18sp</item>
      <item name="android:textColor">#EC9237</item>
    </style>
     <style name="tv2" parent="tv1">
      <item name="android:textSize">28sp</item>
      <item name="android:textColor">#FF7F7C</item>
      <item name="android:fromAlpha">0.0</item>
      <item name="android:toAlpha">0.0</item>
    </style>
</resources>

学习体会:

1.android中里面默认提供12种颜色到android.graphics.Color;里面

2.
LinearLayout:为 线性布局
AbsoluteLayout:为绝对布局
wrap_content:包围文本的长度
fill_parent:填充父容器

3.得到屏幕的大小
DisplayMetrics dm = new DisplayMetrics();//创建DisplayMetrics对象
getWindowManager().getDefaultDisplay().getMetrics(dm);//得到后存放到DisplayMetrics对象
String str1 = dm.widthPixels +"x"+dm.heightPixels;//得到宽度和高度

4.样式定义:
  和color.xml一样,也是到values/添加一个style.xml文件,在到文件里添加如下结构的节点
  <style name = "" parent="父类的样式">
    <item name="属性">值</item>
  </style> 
 
引用的话,跟其他的也是一样的
  使用"@style/名称" 
 
子类的样式大于父类 
 

 

 

<think>好的,用户想在Android使用Java代码自定义RadioButton的样式。首先,我需要回忆一下Android中如何修改控件样式。通常,自定义外观可以通过XML布局或者Java代码实现。但用户明确要求用Java代码修改,所以可能需要通过设置背景、按钮图标等方式。 记得RadioButton是CompoundButton的子,可以通过设置按钮的drawable来实现样式的改变。例如,使用setButtonDrawable()方法。但用户可能想要更细致的控制,比如颜色大小等。这时候可能需要创建StateListDrawable或者使用自定义的drawable资源,然后在Java代码中动态应用。 不过,用户提到要使用Java代码而不是XML,所以可能需要直接在代码中创建LayerDrawable或者ShapeDrawable。例如,创建不同状态下的背景(选中、未选中),然后设置为RadioButton的按钮图标。 另外,还需要考虑兼容性和不同状态下的样式变化,比如按下状态、禁用状态等。可能需要使用StateListDrawable来管理不同状态下的显示效果。同时,可能还需要调整图标的位置,比如通过setCompoundDrawables()来设置drawable的位置。 还需要注意,直接通过Java代码设置可能会比较繁琐,尤其是涉及到复杂的drawable时,可能还是推荐使用XML定义drawable,然后在Java中引用。但用户坚持用Java代码的话,可能需要动态构建这些drawable对象。 另外,用户提供的引用中提到了setStyle方法,比如引用[1]中的ToggleButton设置样式,但这是在JavaFX中的例子,Android中并不适用。不过,可以借鉴思路,即通过代码设置控件的样式属性。 综上,可能的步骤包括: 1. 创建自定义的StateListDrawable,定义不同状态下的外观。 2. 使用ShapeDrawable或LayerDrawable来绘制按钮的不同部分。 3. 将自定义的Drawable设置为RadioButton的按钮图标。 4. 调整文字和图标的间距、大小等属性。 需要注意的是,动态创建Drawable可能需要较多的代码,而且不如XML方便维护,但可以实现动态修改的效果。此外,可能需要处理不同分辨率的屏幕使用合适的尺寸单位。</think>在Android中通过Java代码自定义RadioButton样式,可以通过以下步骤实现: ### 一、基础样式修改 1. **修改按钮图标大小**: ```java RadioButton radioButton = findViewById(R.id.radioButton); radioButton.setButtonDrawable(new InsetDrawable( ContextCompat.getDrawable(this, R.drawable.custom_radio), 0, 0, 0, 0)); // 设置内边距 radioButton.setScaleX(1.5f); // 水平缩放 radioButton.setScaleY(1.5f); // 垂直缩放 ``` 2. **动态颜色修改**: ```java radioButton.setButtonTintList(ColorStateList.valueOf(Color.RED)); // API 21+ ``` ### 二、高级自定义实现 1. **创建自定义StateListDrawable**: ```java StateListDrawable states = new StateListDrawable(); // 选中状态 states.addState(new int[]{android.R.attr.state_checked}, createCircleDrawable(Color.BLUE, 24)); // 未选中状态 states.addState(new int[]{-android.R.attr.state_checked}, createRingDrawable(Color.GRAY, 24)); radioButton.setButtonDrawable(states); ``` 2. **自定义Drawable生成方法**: ```java private Drawable createCircleDrawable(int color, int size) { ShapeDrawable shape = new ShapeDrawable(new OvalShape()); shape.setIntrinsicWidth(size); shape.setIntrinsicHeight(size); shape.getPaint().setColor(color); return shape; } ``` ### 三、布局参数调整 ```java // 设置图标与文字间距 radioButton.setCompoundDrawablePadding(16); // 设置图标位置(左、上、右、下) radioButton.setCompoundDrawables(null, null, null, null); // 清除默认 radioButton.setCompoundDrawablesRelativeWithIntrinsicBounds( states, null, null, null); // 左侧显示自定义图标 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值