标签: android-ui

如何有选择地装饰RecyclerView项目

我正在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类中是否可以被认为是最佳实践(关注点分离)?

android android-ui android-recyclerview

36
推荐指数
1
解决办法
1万
查看次数

将webview背景图像设置为Android中的资源图形

我正在尝试将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 android-ui android-webview android-resources

29
推荐指数
2
解决办法
3万
查看次数

在Android设备中逐步检测软导航栏的可用性?

我试图通过android程序确定软导航栏.我找不到直接判断的方法.无论如何都有找到导航栏的可用性.

软导航栏图像在这里.

在此输入图像描述

android android-ui android-layout android-navigation

29
推荐指数
4
解决办法
2万
查看次数

是否有更简单/更好的方法在TextView上放置边框/轮廓?

所以我想要一个带有很酷边框的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)

xml android border textview android-ui

27
推荐指数
1
解决办法
4万
查看次数

动画直到UI更新或触摸事件才开始

我有一个奇怪的问题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)

android android-ui android-animation

27
推荐指数
2
解决办法
2万
查看次数

让DrawerLayout滑过ActionBar

我在一个活动中有一个滑动抽屉菜单,它有一个动作栏,上面有一些标签.

我想让滑动抽屉滑过标签,而不是它们下方.

这就是它现在的样子......

操作栏选项卡下的滑动菜单

关于如何做到这一点的任何想法?

注意:我知道我可能在这里打破了一些约定和UI模式,如果它根本不起作用,我会看一些替代方案.但我想先让它工作.

编辑:请参阅下面的Google Play音乐应用屏幕截图,该应用完全符合我的需求.请参阅下面@ CommonsWare的答案,他确实同意我可能违反惯例.但是,鉴于播放音乐应用程序,它可能也不是那么罕见.

正确导航,标签正确滑动

android slidingdrawer android-ui android-actionbar android-tabs

25
推荐指数
2
解决办法
3万
查看次数

从Dialog中删除边框,填充

我有一个主题为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)

我正试图摆脱它周围的边框和填充..我想填补屏幕的水平.没有灰色边框.请帮忙 :) 在此输入图像描述

user-interface android android-ui android-activity

24
推荐指数
3
解决办法
3万
查看次数

如何在ActionBar溢出菜单中显示图标?

我想在溢出下拉菜单中显示菜单项标题以外的图标.

有可能吗?

android android-ui android-layout actionbarsherlock

23
推荐指数
2
解决办法
3万
查看次数

构建播放音乐般的界面

我正在尝试构建和界面,模仿最近的Google Play音乐界面,它在手机上的提示如下所示

谷歌播放音乐界面

我已经得到了DrawerLayout正确的选项卡,但我不知道如何构建显示当前播放歌曲的惊人底部片段.它混合了两个功能:

  • 如果您将此片段向左滑动,它将被下一首歌曲替换.我认为每首歌使用a ViewPager和new 可以相当快地完成Fragment,但这是一种有效的方法吗?
  • 如果你向上滑动,它会打开包含播放器本身的抽屉(参见上面的第二和第三个屏幕截图).如何在我的应用程序中获得类似的东西?我在文档中找不到任何提及,所以我猜它不是真正的官方.

android android-ui android-layout android-fragments

22
推荐指数
1
解决办法
6254
查看次数

如何从儿童活动中完成父活动

我是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

21
推荐指数
3
解决办法
2万
查看次数