SwitchCompat
修改默认的开关颜色
默认打开的颜色是红色的:
在res/values/styles中添加以下代码
<style name="switchStyle" parent="Theme.AppCompat.Light">
<!--开启时的颜色-->
<item name="colorControlActivated">@color/blue_color</item>
<!--关闭时的颜色-->
<item name="colorSwitchThumbNormal">#8F8E8E</item>
<!--关闭时的轨迹颜色-->
<item name="android:colorForeground">#ACABA9</item>
</style>
在布局文件中使用,添加 app:theme="@style/switchStyle"即可
<androidx.appcompat.widget.SwitchCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:theme="@style/switchStyle"
/>
效果如下:
RecyclerView
ViewPager + SmartRefreshLayout + RecyclerView 导致最后一个 Item 显示不全。
高度为 0dp ,使用 layout_constraintBottom_toBottoOf = " parent "。
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white">
<include
android:id="@+id/view"
layout="@layout/include_toolbar_layout" />
<net.lucode.hackware.magicindicator.MagicIndicator
android:id="@+id/magic_indicator"
android:layout_width="wrap_content"
android:layout_height="@dimen/xdp_32"
android:layout_marginTop="@dimen/xdp_15"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/view" />
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/magic_indicator" />
</android.support.constraint.ConstraintLayout>
TextView
设置字间距和行间距
通过xml设置
设置行间距:android:lineSpacingExtra
如:android:lineSpacingExtra="2dp"
设置行间距的倍数:android:lineSpacingMultiplier
如:android:lineSpacingMultiplier="1.2"
以上两个属性设置任一都可以修改TextView的行间距。
设置文本水平方向字体的缩放:android:textScaleX属性
这并不能真正的达到设置字间距的目的,查看源码解释如下:
Sets the extent by which text should be stretched horizontally.
设置水平方向文本的字间距:android:letterSpacing
如:android:letterSpacing="0.05"
通过代码设置
设置字间距
textView.setLetterSpacing(0.05);
Toast
显示异常
字和框不匹配 将Toast.makeText(Context,String,int)的第一个参数传入ApplicationContext就行了
public void showShortToast(String text) {
Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();
}
LinearLayout
内部控件间距设置
android:padding属性 可控制LinearLayout内部控件距离其他控件之间的距离
AndroidX支持
1.支持AndroidX,在项目根目录的gradle.properties中添加这两行
android.useAndroidX=true
android.enableJetifier=true
2、修改app目录下的build.gradle
将原来引用support.*的支持包全部替换为对应的androidx.*支持包
3、这个时候还需要再修改一下布局文件中,引用了support.*支持包的控件,改为androidx.*支持包引入
4、最后就是clear一下项目,再rebuild一下。。。应该就可以顺畅运行啦
RadioGroup实现点击的RadioButton项变色
drawable下新建selector类型的radio_selector.xml文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@color/colorSelect"/>//选中时颜色
<item android:state_checked="false" android:drawable="@color/colorNoSelect"/>//未选中时颜色
<item android:drawable="@color/colorNoSelect"/>//默认颜色
</selector>
布局中RadioGroup代码 在每个RadioButton中引用,刚才写的文件,android:background="@drawable/radio_selector"
给默认展示页面的对应的RadioButton中设置默认选中,android:cheched="true"
<RadioGroup
android:id="@+id/radiogroup"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_alignParentBottom="true"
android:layout_height="40dp">
<RadioButton
android:id="@+id/home_button"
android:background="@drawable/radio_selector"
android:gravity="center"
android:layout_width="0dp"
android:button="@null"
android:layout_weight="1"
android:layout_height="match_parent"
android:text="首页"/>
<RadioButton
android:id="@+id/zixuan_button"
android:background="@drawable/radio_selector"
android:gravity="center"
android:layout_width="0dp"
android:button="@null"
android:layout_weight="1"
android:layout_height="match_parent"
android:text="自选"/>
<RadioButton
android:id="@+id/hangqing_button"
android:background="@drawable/radio_selector"
android:gravity="center"
android:layout_width="0dp"
android:button="@null"
android:layout_weight="1"
android:layout_height="match_parent"
android:text="行情"/>
<RadioButton
android:id="@+id/zixun_button"
android:background="@drawable/radio_selector"
android:checked="true"
android:gravity="center"
android:layout_width="0dp"
android:button="@null"
android:layout_weight="1"
android:layout_height="match_parent"
android:text="资讯"/>
<RadioButton
android:id="@+id/jiaoyi"
android:background="@drawable/radio_selector"
android:gravity="center"
android:layout_width="0dp"
android:button="@null"
android:layout_weight="1"
android:layout_height="match_parent"
android:text="交易"/>
</RadioGroup>
Android app启动时黑屏或者白屏的原因及解决办法
1、产生原因 其实显示黑屏或者白屏实属正常,这是因为还没加载到布局文件,就已经显示了window窗口背景,黑屏白屏就是window窗口背景。 2、解决办法 通过设置设置Style
(1)设置背景图Theme
通过设置一张背景图。 当程序启动时,首先显示这张背景图,避免出现黑屏
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:screenOrientation">portrait</item>
<item name="android:windowBackground">>@mipmap/splash</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
</style>
(2)设置透明Theme
通过把样式设置为透明,程序启动后不会黑屏而是整个透明了,等到界面初始化完才一次性显示出来
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:screenOrientation">portrait</item>
</style>
两者对比:
Theme1 程序启动快,界面先显示背景图,然后再刷新其他界面控件。给人刷新不同步感觉。 Theme2 给人程序启动慢感觉,界面一次性刷出来,刷新同步。
(3)修改AndroidManifest.xml
<application
android:name=".App"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true">
<activity android:name=".MainActivity"
android:theme="@style/AppTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
//......
</application>
3、常见的Theme主题
android:theme="@android:style/Theme.Dialog" //Activity显示为对话框模式
android:theme="@android:style/Theme.NoTitleBar" //不显示应用程序标题栏
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" //不显示应用程序标题栏,并全屏
android:theme="Theme.Light " //背景为白色
android:theme="Theme.Light.NoTitleBar" //白色背景并无标题栏
android:theme="Theme.Light.NoTitleBar.Fullscreen" //白色背景,无标题栏,全屏
android:theme="Theme.Black" //背景黑色
android:theme="Theme.Black.NoTitleBar" //黑色背景并无标题栏
android:theme="Theme.Black.NoTitleBar.Fullscreen" //黑色背景,无标题栏,全屏
android:theme="Theme.Wallpaper" //用系统桌面为应用程序背景
android:theme="Theme.Wallpaper.NoTitleBar" //用系统桌面为应用程序背景,且无标题栏
android:theme="Theme.Wallpaper.NoTitleBar.Fullscreen" //用系统桌面为应用程序背景,无标题栏,全屏
android:theme="Theme.Translucent" //透明背景
android:theme="Theme.Translucent.NoTitleBar" //透明背景并无标题
android:theme="Theme.Translucent.NoTitleBar.Fullscreen" //透明背景并无标题,全屏
android:theme="Theme.Panel " //面板风格显示
android:theme="Theme.Light.Panel" //平板风格显示