小编Bas*_*sit的帖子

RecyclerView装饰器在刷新时添加额外的填充

所以,在我的项目中实现RecyclerView时,我遇到了一个奇怪的问题.我有一个自定义装饰器来实现一致的顶部和底部填充以及元素之间相当不同的填充值.每当我点击刷新,即从后端获取数据并再次填充RecyclerView时,填充会增加,并且每次刷新时都会继续增加.

这是正确的方法

当我点击刷新(导致AsyncTask再次执行)时,项目之间的空间增加.并且每次刷新都会不断增加.

物品之间的填充增加

我有一个像这样的典型RecyclerView

<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clickable="false"
    android:focusableInTouchMode="false">
</android.support.v7.widget.RecyclerView>
Run Code Online (Sandbox Code Playgroud)

在RecyclerView中填充内容是CardView,具有以下布局:

<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/cv"
android:layout_marginLeft="9dp"
android:layout_marginRight="9dp"
>

    <RelativeLayout
        android:id="@+id/itemLinearTop"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingTop="17dp"
        android:paddingRight="10dp"
        android:paddingLeft="10dp">

        <TextView
            android:id="@+id/tv1"
            android:textColor="@color/logo_black"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium" />


        <TextView
            android:id="@+id/tv2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/tv1"
            android:textColor="@color/logo_black"
            android:layout_alignParentRight="true"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <!-- More elements -->
    </RelativeLayout>
</android.support.v7.widget.CardView>
Run Code Online (Sandbox Code Playgroud)

我正在初始化和填充RecyclerView,如下所示:

// In PostExecute of AsyncTask
RecyclerView rv = (RecyclerView) rootView.findViewById(R.id.recyclerview);
RecycleViewAdapter adapter = new FuelPricesRecycleViewAdapter(data);
rv.setAdapter(adapter);
rv.addItemDecoration(new RecyclerViewItemDecoration(30, item_count - 1));
Run Code Online (Sandbox Code Playgroud)

这就是我的RecyclerViewItemDecoration类的样子:

public class RecyclerViewItemDecoration extends RecyclerView.ItemDecoration {
    private int …
Run Code Online (Sandbox Code Playgroud)

android

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

波纹效果仅适用于第一个ListView项目

我已经实现了Lollipop中引入的涟漪效应ListView.但它只适用于第一项ListView.我已经按照这个问题的答案,但我无法设置涟漪效应.

我有一个ripple_background.xmldrawable-v21文件夹:

<ripple
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@android:color/background_dark">
    <item>
        <shape
            android:shape="oval">
            <solid android:color="?android:colorAccent" />
        </shape>
    </item>
</ripple>
Run Code Online (Sandbox Code Playgroud)

ListView存在的布局如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <ListView
        android:id="@+id/listSettings"
        android:listSelector="@android:color/transparent"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:divider="@color/price_item_divider"
        android:dividerHeight="1dp"
        android:drawSelectorOnTop="true"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

内部填充的项目ListView如下(settings_item_row.xml):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="70dp"
    android:minHeight="?android:attr/listPreferredItemHeightSmall"
    android:background="@drawable/ripple_background"
    android:padding="16dp" >

    <ImageView
        android:id="@+id/imageViewIcon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:paddingRight="10dp" />

    <TextView
        android:id="@+id/textViewName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@+id/imageViewIcon"
        android:paddingRight="10dp"
        android:textColor="@android:color/black"
        android:textSize="18sp" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助!

android

12
推荐指数
2
解决办法
8023
查看次数

FAB的android.support.design.widget.FloatingActionButton实现减少了图像大小

所以我已经开始迁移到我的Android应用程序的官方支持设计库,替换元素.我刚刚用官方替换了FAB(实现为ImageButton)android.support.design.widget.FloatingActionButton.但是按钮内的图标与其中的图标相比较小ImageButton.可能是什么原因?

FloatingActionButton的实施:

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/icon" />
Run Code Online (Sandbox Code Playgroud)

尝试添加,app:fabSize="normal但也没有用.

这是它使用后的方式FloatingActionButton:

在此输入图像描述

这就是它在使用它时的样子ImageButton:

在此输入图像描述

android material-design floating-action-button

8
推荐指数
2
解决办法
4541
查看次数

在网络应用程序中嵌入Google+环聊应用

有没有办法在基于PHP的网站中嵌入Google+环聊应用?我可以在iframe中加载应用,而无需登陆Google+环聊页面吗?如果是这样,怎么样?

google-api google-plus hangout google-api-php-client

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

自定义Share Intent的UI

在此输入图像描述

我在Android应用程序中有共享意图,我想知道如何自定义其UI.我在Stackoverflow上浏览了几个相关的问题,其中大多数都讨论了要显示的特定应用程序集.我不希望这样.我希望操作系统能够判断它在共享意图视图中显示的应用程序,但我确实希望看起来像某种方式.就像我附上这个问题的图像一样.此外,有没有办法使其成为自定义UI,而不必自己处理点击事件?先感谢您.

android

2
推荐指数
1
解决办法
1816
查看次数

如何在Google Maps Android API V2中获取位置及其更新

我想在Google Maps Android API v2中启用位置.我想要的是:

  1. 以固定纬度/经度为中心加载地图.
  2. 开始收听位置更改,一旦提供者(网络/ GPS)获取位置,将地图置于此位置的中心并为其设置动画(动画仅运行一次).同时,位置监听器在指定的时间量后更新用户的位置,
  3. 存储此位置数据并使用它通过我的API获取附近的景点.

我对如何定期更新,选择时间间隔的数量感到困惑.现在,我已经设置了项目来显示地图并使用

googleMap.setMyLocationEnabled(true);
googleMap.setOnMyLocationChangeListener(myLocationChangeListener);

private GoogleMap.OnMyLocationChangeListener myLocationChangeListener = new GoogleMap.OnMyLocationChangeListener() {
    @Override
    public void onMyLocationChange(Location location) {
        LatLng loc = new LatLng(location.getLatitude(), location.getLongitude());
        if(googleMap != null){
            if(!firstTime){
                CameraPosition cameraPosition = new CameraPosition.Builder()
                .target(loc).zoom(zoom).build();
                googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 
                firstTime = true;
            }

            lat = location.getLatitude();
            lng = location.getLongitude();
            Toast.makeText(context, "Location is: " + String.valueOf(lat) + ", " 
                    + String.valueOf(lng), Toast.LENGTH_LONG).show();
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

在变量中设置lat/lng.我的问题是:

  1. 这是正确的方法吗?或者可以做得更好?
  2. 位置更改侦听器经常更新自身.我看到几秒钟内就会制作吐司.如何规范呢?
  3. 如何在活动消失(暂停/停止)时阻止侦听器获取位置?谢谢!

android google-maps-android-api-2

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