我正在ItemDecoration从这个要点创建一个子类:https://gist.github.com/alexfu/0f464fc3742f134ccd1e
如何使它只装饰具有一定条件的物品?例如,仅装饰具有特定位置的项目,ViewHolder的类型等.
我已经使用此代码修改了上面提到的要点(加上对已弃用的Android API的一些更改),但所有项目都会被装饰:
public boolean isDecorated(View view, RecyclerView parent) {
RecyclerView.ViewHolder holder = parent.getChildViewHolder(view);
return holder instanceof MenuIconViewHolder || holder instanceof MenuDetailViewHolder;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
if (isDecorated(view, parent)) {
if (mOrientation == VERTICAL_LIST) {
outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());
} else {
outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);
}
} else {
super.getItemOffsets(outRect, view, parent, state);
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码出了什么问题?顺便说一句,将这种代码放在ItemDecoration类中是否可以被认为是最佳实践(关注点分离)?
我正在尝试将webview的背景设置为Android中的可绘制图像资源.
从sdk看起来这样的东西可以工作,但事实并非如此.
WebView web = (WebView) findViewById(R.id.webView);
web.setBackgroundResource(R.drawable.backgroundmain);
web.loadData(profile, "text/html", "UTF-8");
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我试图通过android程序确定软导航栏.我找不到直接判断的方法.无论如何都有找到导航栏的可用性.
软导航栏图像在这里.

所以我想要一个带有很酷边框的TextView.我找不到任何标准的方法,所以我提出了这个:
@ drawable/custom_bg_1:蓝色圆角形状
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#439CC8"/>
<corners android:radius="3dp" />
<padding android:left="10dp" android:top="10dp"
android:right="10dp" android:bottom="10dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
@ drawable/custom_bg_2:白色圆形
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF"/>
<corners android:radius="3dp" />
<padding android:left="10dp" android:top="10dp"
android:right="10dp" android:bottom="10dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
myactivity.xml:活动的xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="15dp" >
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="2dp"
android:background="@drawable/custom_bg_1" >
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/curr_loc"
android:textSize="15sp"
android:background="@drawable/custom_bg_2" />
</LinearLayout>
</Linearlayout>
Run Code Online (Sandbox Code Playgroud)
结果:

我在这里做的是在蓝色形状背景内重叠白色形状背景以产生蓝色边框的效果.我无法想象这是获得这种效果的最佳方式.我已经看到其他帖子试图解决这个问题,比如这个和这个,但我觉得它们和我的实现一样多.
有没有更好的方法或更标准的方法简单地在某些视图(例如TextView)周围放置边框,还是我应该坚持我的方式?
编辑
我将custom_bg_2.xml更改为如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<shape …Run Code Online (Sandbox Code Playgroud) 我有一个奇怪的问题AlphaAnimation.它应该在AsyncTask调用处理程序时重复运行.
但是,第一次调用处理程序时Activity,除非我触摸屏幕或更新UI(例如按下手机的菜单按钮),否则动画将无法启动.
奇怪的是,一旦动画至少运行一次,如果再次调用处理程序,它将毫无问题地启动.
这是代码的样子:
// AsyncTask handler
public void onNetworkEvent()
{
this.runOnUiThread(new Runnable() {
@Override
public void run()
{
flashScreen(Animation.INFINITE);
}
});
}
// Called method
private void flashScreen(int repeatCount)
{
final View flashView = this.findViewById(R.id.mainMenuFlashView);
AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
alphaAnimation.setRepeatCount(repeatCount);
alphaAnimation.setRepeatMode(Animation.RESTART);
alphaAnimation.setDuration(300);
alphaAnimation.setInterpolator(new DecelerateInterpolator());
alphaAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation)
{
flashView.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationEnd(Animation animation)
{
flashView.setVisibility(View.GONE);
}
@Override
public void onAnimationRepeat(Animation animation) { }
}); …Run Code Online (Sandbox Code Playgroud) 我在一个活动中有一个滑动抽屉菜单,它有一个动作栏,上面有一些标签.
我想让滑动抽屉滑过标签,而不是它们下方.
这就是它现在的样子......

关于如何做到这一点的任何想法?
注意:我知道我可能在这里打破了一些约定和UI模式,如果它根本不起作用,我会看一些替代方案.但我想先让它工作.
编辑:请参阅下面的Google Play音乐应用屏幕截图,该应用完全符合我的需求.请参阅下面@ CommonsWare的答案,他确实同意我可能违反惯例.但是,鉴于播放音乐应用程序,它可能也不是那么罕见.

android slidingdrawer android-ui android-actionbar android-tabs
我有一个主题为Theme.Transparent的活动,它是:
<style name="Theme.Transparent" parent="android:Theme.Dialog">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">false</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:gravity">top</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我正试图摆脱它周围的边框和填充..我想填补屏幕的水平.没有灰色边框.请帮忙 :)

我想在溢出下拉菜单中显示菜单项标题以外的图标.
有可能吗?
我正在尝试构建和界面,模仿最近的Google Play音乐界面,它在手机上的提示如下所示

我已经得到了DrawerLayout正确的选项卡,但我不知道如何构建显示当前播放歌曲的惊人底部片段.它混合了两个功能:
ViewPager和new 可以相当快地完成Fragment,但这是一种有效的方法吗?我是Android开发的新手.
我创建了一个主Activity( - > A),它有4个按钮.其中一个按钮是EXIT按钮.
我点击退出按钮开始另一个活动( - > B).这通过'A'Activity的意图打开'B'Activity.
活动'B'包含 - 你要退出吗?是 - 按钮和无按钮.
如果我给完成(),按下按钮 - 它会退出'B'Activity.我想完成'B'和'A'.
我甚至尝试过A.finish() - >这不会被识别并导致语法/语义错误.
我很感激这里的帮助.
PS:我使用的是Android-2.2版手机,我不喜欢用ActivityManager来解决这个问题.
android android-intent android-ui android-2.2-froyo android-activity