任何人都使用了新的问题,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)
现在这很好用,但我想知道为什么这对默认构造函数不起作用 =)
感谢您的时间 :)
这可能是一个菜鸟问题,但我想知道为什么我们必须使用静态方法(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) 好日子,正如标题所说,任何人都知道如何在片段中从CursorLoader加载数据时实现进度对话框.在这方面找不到任何例子.任何有关如何操作的链接或指南将受到高度赞赏.谢谢
android android-fragments android-dialog android-cursorloader
这是一个奇怪的.我有一个基本的应用程序(仪表板,...)和一个GLSurfaceview,我在其中绘制3D对象和纹理.一切都很漂亮但是当我回到其他活动时,嗯好的截图比单词更好:
这是之前的仪表板

这是opengl:

当我按下时,这是我的仪表板:

正如您所看到的,图像也消失了.我运行4.0+所以我想这是因为android用opengl绘制元素,因为它在我的2.2设备上没有这样做.
你知道造成这种情况的原因吗?当我不使用纹理btw时,它不会发生.
我是论坛的新手,刚刚开始学习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是一个不正确的语法,还是需要在其他地方声明?任何帮助将不胜感激如何解决或修复此问题.
谢谢!