android:fadingedge="@null",Android-易错点归纳

1.在Service中启动Activity/Dialog的问题

在Service中启动startActivity会出现异常:

android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity

context requires the FLAG_ACTIVITY_NEW_TASK flag

// 1.在Service中启动Activity,必须新建ACTIVITY的任务栈TASK,用以区分其它APP的任务栈

Intent intent = new Intent(getApplicationContext(), XXActivity.class);

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(intent);

// 2.在Service中使用Dialog等弹窗/对话框,必须使用系统窗体SYSTEM-Window,悬浮在桌面或其它APP之上

添加权限:

// 系统弹窗一

WindowManager.LayoutParams params = new WindowManager.LayoutParams();

params.height = WindowManager.LayoutParams.WRAP_CONTENT;

params.width = WindowManager.LayoutParams.WRAP_CONTENT;

params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; // 设置系统弹窗

params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;

wm = (WindowManager) getSystemService(WINDOW_SERVICE);

wm.addView(View.inflate(this, R.layout.item, null), params);

// 系统弹窗二

AlertDialog.Builder builder = new AlertDialog.Builder(this);

AlertDialog dialog = builder.create();

// Dialog dialog = new Dialog(this);

dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); // 设置系统弹窗

为什么在Service中限制Activity/Dialog启动?

因为当一个APP只有Service在运行(此时该APP没有任何UI显示),

如果这个Service启动UI(Activity/Dialog),而用户在使用其它APP的UI,这会严重影响用户体验!

2.ListView属性总结

1.stackFromBottom

ListView和GridView从底部开始显示数据项

android:stackFromBottom="true"/>

2.transcriptMode

在ListView添加新项时,是否自动滑动到底部,显示最新项

disabled: 取消transcriptMode模式,默认的

normal: 只有最后一个选项已经显示在屏幕时,才自动滑动到底部

alwaysScroll: 列表总会自动滑动到底部,显示最新项

android:transcriptMode="alwaysScroll" />

3.cacheColorHint

设置ListView背景时,还应该设置cacheColorHint为"#00000000"(透明),

否则在滑动或点击时,列表颜色可能会出现变黑等异常情况!

android:background="@color/white"

android:cacheColorHint="#00000000"/>

4.divider

设置列表项之间设置分割线(颜色或图片)

取消分割线: android:divider="@null"

android:divider="@drawable/driver"/>

5.fadingEdge

设置列表周边阴影

取消阴影: android:fadingEdge="none"

android:cacheColorHint="#000000ff"

android:fadingEdge="vertical"

android:fadingEdgeLength="40dp"/>

6.scrollbars

设置listView的滚动条

android:scrollbars="none"

7.fadeScrollbars

设置该属性为true,实现滚动条自动隐藏和显示

android:fadeScrollbars="true"

8.fastScrollEnabled

启用ListView快速滚动滑块,能快速滑动列表,但是在数据较小时不会显示快速滚动滑块,

可以在ListView或GridView等子类中使用快速滚动辅助!

android:fastScrollEnabled="true"

setFastScrollEnabled(true);

9.listSelector

在列表中按下选中时效果

android:listSelector="@drawable/xxx" />

10.drawSelectorOnTop

设置为true, 点击时,listSelector内容会在被选项之上,被选项内容被遮住;

设置为false,点击时,listSelector内容会在被选项之下,成为背景

android:drawSelectorOnTop="true" />

11.choiceMode

定义列表的选择行为

none:默认,列表不选择

singleChoice:列表允许选择一个

multipleChoice:列表允许选择多个

android:choiceMode="multipleChoice" />

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过继承 Preference 类来实现自定义布局,并在其中添加一个 Button,然后为该 Button 添加击事件。下面是一个简单的示例代码: ```java public class CustomPreference extends Preference { private Button mButton; public CustomPreference(Context context, AttributeSet attrs) { super(context, attrs); setWidgetLayoutResource(R.layout.custom_preference); } @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); mButton = (Button) holder.findViewById(R.id.custom_button); mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 处理击事件 } }); } } ``` 在布局文件 `custom_preference.xml` 中添加一个 Button: ```xml <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; android:layout_width=&quot;match_parent&quot; android:layout_height=&quot;?android:attr/listPreferredItemHeight&quot; android:gravity=&quot;center_vertical&quot; android:paddingStart=&quot;?android:attr/listPreferredItemPaddingStart&quot; android:paddingEnd=&quot;?android:attr/listPreferredItemPaddingEnd&quot;> <TextView android:id=&quot;@android:id/title&quot; android:layout_width=&quot;wrap_content&quot; android:layout_height=&quot;wrap_content&quot; android:textAppearance=&quot;?android:attr/textAppearanceListItem&quot; android:singleLine=&quot;true&quot; android:ellipsize=&quot;marquee&quot; android:fadingEdge=&quot;horizontal&quot; android:textColor=&quot;@android:color/primary_text_light&quot; /> <Button android:id=&quot;@+id/custom_button&quot; android:layout_width=&quot;wrap_content&quot; android:layout_height=&quot;wrap_content&quot; android:text=&quot;Button&quot; /> </LinearLayout> ``` 最后,在设置界面的 XML 文件中使用自定义的 Preference: ```xml <PreferenceScreen xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;> ... <com.example.CustomPreference android:key=&quot;custom_preference&quot; android:title=&quot;Custom Preference&quot; /> </PreferenceScreen> ``` 这样就可以在设置界面中显示一个自定义布局的 Preference,其中包含一个 Button,并且为该 Button 添加了击事件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值