小编Nic*_*ick的帖子

在NestedScrollView用完内容后滚动,停止CollapsingToolbar折叠

在Android中,如果NestedScrollView内容不足以滚动,如何让CollapsingToolbar停止折叠?此功能目前存在于Android 5.1.1上的"联系人"应用中.但是,在我的代码中,当NestedScrollView停止滚动时,工具栏继续折叠,两者之间留下间隙.

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="256dp"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginStart="@dimen/content_padding_normal"
            app:expandedTitleMarginEnd="64dp">
            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:titleTextAppearance="@style/ActionBar.TitleText"
                app:layout_collapseMode="pin" />
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>
    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        android:scrollbars="none">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:paddingBottom="@dimen/keyline_2">
            <android.support.v7.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/element_spacing_normal">
                <include
                    layout="@layout/ViewLoadingIndeterminate" />
                <LinearLayout
                    android:id="@+id/progress_status_container"
                    style="@style/ConnectionFieldContainer"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:orientation="vertical"
                    android:visibility="visible">
                    <Spinner
                        android:id="@+id/progress_status"
                        android:layout_width="match_parent"
                        style="@style/Text.ConnectionField" />
                    <TextView
                        style="@style/Text.ConnectionLabel"
                        android:text="@string/mobile.customer.connect.progress.status" />
                </LinearLayout>
            </android.support.v7.widget.CardView>
            <android.support.v7.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/element_spacing_normal">
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">
                    <LinearLayout
                        android:id="@+id/email1_container" …
Run Code Online (Sandbox Code Playgroud)

android android-coordinatorlayout android-collapsingtoolbarlayout

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

Android中社交分享的最佳方式

我一直在寻找一种向社交网络分享信息的方法.我找到了两种可能的解决方案:

  • 寻找已安装的应用程序并发送一个意图(如在其库中使用android)
  • 使用社交网络api

当寻找快速实现方法时,我说使用已安装的应用程序,但如果它进行自定义和泛化,我认为第二个选项是最好的.

我很难决定一个人是否胜过另一个人.

所以我的问题是:最好的方法是什么?我建议的其中一个或完全不同的方式?

api android sharing social-networking

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

View上的onDraw()绘制了布局

好的,这是交易.我想在扩展库类中移动项目以更改图像的顺序.我现在这样做的方式:

  • 长按删除当前所选项目,
  • 用于onDraw()绘制相同的图像,以便我可以使用它移动它onTouchEvent()
  • 在发布时再次添加该项目

这工作正常,但问题是,当使用该onDraw()方法时,它将绘制图库项目后面的图像.有没有办法改变绘制的优先级?

android gallery ondraw

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

使用自定义属性创建默认样式

所以这是我的问题:我创建了一个扩展的自定义组件.Button这个按钮有一个名为的属性testAttr.

<declare-styleable name="TestButton" parent="@android:style/Widget.Button">
    <attr name="testAttr" format="reference|color"/>
</declare-styleable>
Run Code Online (Sandbox Code Playgroud)

我想为这个组件创建一个默认样式,所以我添加了这个:

<declare-styleable name="TestTheme">
    <attr name="testStyle" format="reference"/>
</declare-styleable>

<style name="Theme.AppTheme" parent="@android:style/Theme" >
    <item name="testStyle">@style/test</item>
</style>
Run Code Online (Sandbox Code Playgroud)

问题是我想要同时使用android属性和我自己的属性,这是行不通的:

<style name="test" parent="@android:style/Widget.Button">
    <item name="android:background">#FF0000</item>
    <item name="testAttr">testText</item>
</style>
Run Code Online (Sandbox Code Playgroud)

我在自定义组件中设置默认样式,如下所示:

public myButton(final Context context) {
    this(context, null);
}

public myButton(final Context context, final AttributeSet attrs) {
    this(context, attrs, R.styleable.TestTheme_testStyle);
}

public myButton(final Context context, final AttributeSet attrs, final int defStyle) {
    super(context, attrs, defStyle);

    final TypedArray array = context.obtainStyledAttributes(
            attrs,
            R.styleable.TestButton,
            defStyle,
            R.style.testDefault);
        final …
Run Code Online (Sandbox Code Playgroud)

android themes styles attr

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

TextView已调整大小以适合文本

我正在开发一个自定义视图来调整textview中的文本大小,以便它适合(我不想椭圆化).

我遇到的麻烦是,在更改文本大小时,textview本身不会重新测量.我一直在查看源代码,发现setTextSize()正在调用以下内容:

nullLayouts();
requestLayout();
invalidate();
Run Code Online (Sandbox Code Playgroud)

所以它应该重新测量.这可能是一个错误,因为它在2.3上工作正常,而不是1.6,1.5和2.1仿真器.

这是代码片段,注意textview是扩展的:

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    if(w == 0 && h == 0) {
        setTextSize(TypedValue.COMPLEX_UNIT_PX, defaultSize);
    }

    updateView();
}

private void updateView() {
    int viewWidth = getViewWidth();
    float textWidth = getTextWidth();

    float textSize = textSize();
    while(textWidth > viewWidth && textSize >= MIN_TEXT_SIZE) {

        setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize-1);

        textSize = getTextSize();

        textWidth = getTextWidth();
    }
}
Run Code Online (Sandbox Code Playgroud)

谁能给我提示正确的方向来解决这个问题?

android textview custom-component text-size

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

Actionbar徽标在展开的ActionView上显示应用程序图标

我打造了相当多的障碍ActionBar.

我现在遇到的问题ActionView是扩展时的徽标/图标.由于某种原因,它不使用此处可绘制的徽标,但应用程序图标可绘制.我希望这个消失或者设置为我自己的drawable.我尝试onMenuItemActionCollapse()使用setIcon()功能直接设置图标ActionBar,没有运气.还尝试在那里设置家庭和徽标的东西.

任何想法如何解决这个问题?

android android-actionbar

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

在自定义 Preference 类上调用 setDefaultValue() 不会设置默认值。为什么?

我正在扩展PreferenceActivity我的设置屏幕。在这个偏好活动中,我有几个偏好,其中一个是定制的。问题如下:

在此自定义首选项(从 扩展ListPreference)中,我希望能够设置默认值,因此我覆盖了该setDefaultValue()方法。在这种方法中,我进行了一些解析,因此它将采用正确的值。当我试图用getValue()函数读取这个值时,它只返回null.

所以我想,当我把一些硬编码的值放在那里时会发生什么(你知道,也许我做错了什么,这不是第一次)。嗯,我还是null回来了。

任何想法我做错了什么?

编辑:
在 xml 文件中设置 defaultValue 并不是一个真正的选项,因为在我检索它们之前这些值是未知的。

我做了一个解决方法:

  • 应用程序第一次启动时:获取数据
  • 在首选项中设置值。

这样我在收集数据时设置了默认首选项

android preference preferenceactivity android-preferences listpreference

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