小编AMe*_*rle的帖子

在Android 4.2中的StateListDrawable中使用默认的ShapeDrawable

任何人都使用了新的问题,ShapeDrawable()StateListDrawable在Android 4.2?我曾经这样做过:

ShapeDrawable bg = new ShapeDrawable();    //default Ctor
ShapeDrawable hl = new ShapeDrawable();
hl.getPaint().setColor(color1);
bg.getPaint().setColor(color2);

StateListDrawable s1 = new StateListDrawable();
s1.addState(new int[]{android.R.attr.state_pressed}, hl);
s1.addState(new int[]{}, bg);
Run Code Online (Sandbox Code Playgroud)

但这在Android 4.2中不再起作用,抛出nullpointerexception:

java.lang.NullPointerException
at android.graphics.drawable.ShapeDrawable.mutate(ShapeDrawable.java:387)
at android.graphics.drawable.DrawableContainer.selectDrawable(DrawableContainer.java:315)
at android.graphics.drawable.StateListDrawable.onStateChange(StateListDrawable.java:106)
at android.graphics.drawable.StateListDrawable.addState(StateListDrawable.java:89)
Run Code Online (Sandbox Code Playgroud)

我通过更改我的构造函数来修复问题ShapeDrawable:

ShapeDrawable bg = new ShapeDrawable(new RectShape());
ShapeDrawable hl = new ShapeDrawable(new RectShape());
Run Code Online (Sandbox Code Playgroud)

现在这很好用,但我想知道为什么这对默认构造函数不起作用 =)

感谢您的时间 :)

android drawable android-drawable android-4.2-jelly-bean

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

为什么选择Toast.makeText而不是新的Toast

这可能是一个菜鸟问题,但我想知道为什么我们必须使用静态方法(makeText)来创建Toast而不是构造函数.

为什么我们必须使用这个:

makeText(Context context, CharSequence text, int duration)
Run Code Online (Sandbox Code Playgroud)

而不是这个:

new Toast(Context context, CharSequence text, int duration) 
Run Code Online (Sandbox Code Playgroud)

这是makeText方法:

    public static Toast makeText(Context context, CharSequence text, int duration) {
        Toast result = new Toast(context);

        LayoutInflater inflate = (LayoutInflater)
                context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View v = inflate.inflate(com.android.internal.R.layout.transient_notification, null);
        TextView tv = (TextView)v.findViewById(com.android.internal.R.id.message);
        tv.setText(text);

        result.mNextView = v;
        result.mDuration = duration;

        return result;
    }
Run Code Online (Sandbox Code Playgroud)

为什么我们没有以下内容:

public Toast (Context context, CharSequence text, int duration) {
    this(context);

    LayoutInflater inflate = (LayoutInflater)
            context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflate.inflate(com.android.internal.R.layout.transient_notification, null);
    TextView tv = …
Run Code Online (Sandbox Code Playgroud)

android toast android-source

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

在片段android中的CursorLoader中显示进度对话框

好日子,正如标题所说,任何人都知道如何在片段中从CursorLoader加载数据时实现进度对话框.在这方面找不到任何例子.任何有关如何操作的链接或指南将受到高度赞赏.谢谢

android android-fragments android-dialog android-cursorloader

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

Android opengl问题(怪异)

这是一个奇怪的.我有一个基本的应用程序(仪表板,...)和一个GLSurfaceview,我在其中绘制3D对象和纹理.一切都很漂亮但是当我回到其他活动时,嗯好的截图比单词更好:

这是之前的仪表板

之前

这是opengl: OpenGL的

当我按下时,这是我的仪表板: 在此输入图像描述

正如您所看到的,图像也消失了.我运行4.0+所以我想这是因为android用opengl绘制元素,因为它在我的2.2设备上没有这样做.

你知道造成这种情况的原因吗?当我不使用纹理btw时,它不会发生.

android textures opengl-es

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

错误:不允许使用字符串类型(在'layout_height'中,值为'wrap content').activity_main.xml中

我是论坛的新手,刚刚开始学习Android应用开发.我正在阅读developer.android.com上的教程,并且已经遇到了编译错误.我在activity_main.xml上看到了这三个错误:

error: Error: String types not allowed (at 'layout_height' with value 'wrap content').  activity_main.xml   
error: Error: String types not allowed (at 'layout_width' with value 'wrap content').   activity_main.xml   
error: Error: String types not allowed (at 'layout_height' with value 'wrap content').  activity_main.xml
Run Code Online (Sandbox Code Playgroud)

这是我现在的activity_main.xml代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    tools:context=".MainActivity" >

    <EditText android:id="@+id/edit_message"
        android:layout_width="0dp"
        android:layout_height="wrap content"
        android:layout_weight="1"
        android:hint="@string/edit_message" />

    <Button
        android:layout_width="wrap content"
        android:layout_height="wrap content"
        android:text="@string/button_send" />

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

它是否会抛出错误,因为wrap_content是一个不正确的语法,还是需要在其他地方声明?任何帮助将不胜感激如何解决或修复此问题.

谢谢!

java xml android

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