小编Jer*_*emy的帖子

从XML创建DialogPreference

我一直试图使用android.preference.DialogPreference从XML中膨胀,但文档似乎缺少一些基本的部分,我无法在任何地方找到一个有效的例子.我的XML现在看起来像这样(我尝试了许多排列,但这似乎是一个合理的最小值):

<DialogPreference
android:key="funThing" android:title="Fun Thing"
android:dialogLayout="@layout/fun_layout"
android:positiveButtonText="OK"
android:negativeButtonText="Cancel"
/>
Run Code Online (Sandbox Code Playgroud)

我在这一点上的假设是它需要子类DialogPreference而不是直接使用它.首先,我找不到将实际偏好值与对话框本身中的元素相关联的方法,这在反射时是一种赠品.而且,看来源DialogPreference.java似乎也证实了这一点.我还注意到官方文档将其称为"基类".但至少,在网上建立一个确定性足够的来源会很有帮助,这将有助于下一个N人比我更快地解决这个问题.

对于记录,日志文件如下所示:

I/ActivityManager(   61): Starting: Intent { cmp=org.jeremy.android/.PreferencesActivity } from pid 2755
W/Resources( 2755): Converting to string: TypedValue{t=0x10/d=0x4b0 a=-1}
W/Resources( 2755): Converting to string: TypedValue{t=0x10/d=0x20 a=-1}
D/AndroidRuntime( 2755): Shutting down VM
W/dalvikvm( 2755): threadid=1: thread exiting with uncaught exception (group=0x40015560)
E/AndroidRuntime( 2755): FATAL EXCEPTION: main
E/AndroidRuntime( 2755): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.jeremy.android/org.jeremy.android.PreferencesActivity}: android.view.InflateException: Binary XML file line #28: Error inflating class …
Run Code Online (Sandbox Code Playgroud)

xml android preference

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

在Google App Engine的jinja2中,我如何(轻松)根据带参数的路由名称构建URL?

如果我构建一个jinja环境如下:

jinja_environment = jinja2.Environment (
    loader=jinja2.FileSystemLoader ((os.path.dirname (__file__), 'templates')), extensions=[])
jinja_environment.globals['url_for'] = webapp2.uri_for
Run Code Online (Sandbox Code Playgroud)

在我的模板中,当路由没有定义任何参数时,我可以从路由名称构建简单的URL:

{{ url_for('user_home') }}
Run Code Online (Sandbox Code Playgroud)

但是,当路由包含由字符串定义的参数时/invoice/<:\d+>,我无法传递任何参数.以下列所有方式调用它会失败,其中包括KeyError "Missing argument "0" to build URI.":

{{ url_for('invoice') }}
{{ url_for('invoice', args=['123']) }}
{{ url_for('invoice', kwargs={'__0__':'123'}) }}
{{ url_for('invoice',_request=None, args=['123'],kwargs={'__0__':'123'}) }}
Run Code Online (Sandbox Code Playgroud)

现有的例子似乎已经过时了 - 至少我无法让它们发挥作用.我错过了什么?

google-app-engine jinja2

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

手动膨胀视图上的layout()

在 中Activity,我手动View从 XML 扩充对象,如下所示:

    LayoutInflater inflater = LayoutInflater.from (this);
    View topView = inflater.inflate (R.layout.topview_layout, null);
Run Code Online (Sandbox Code Playgroud)

我不会将视图添加到任何显示层次结构中,而是使用它来生成然后显示的位图。由于这些位图将是我的(主)屏幕的大小,因此我尝试导致布局发生:

    Display display = ((WindowManager) getSystemService (Context.WINDOW_SERVICE))
                        .getDefaultDisplay();
    topView.measure (display.getWidth (), display.getHeight ());
    topView.layout (0, 0, display.getWidth (), display.getHeight ());
Run Code Online (Sandbox Code Playgroud)

(它在上面的代码中获得了正确的显示尺寸。)

topView是一个LinearLayout包含一些其他视图的。其中之一是ImageView

    ImageView childView = (ImageView) pageView.findViewById (R.id.textArea);
Run Code Online (Sandbox Code Playgroud)

然而,在调用以下命令后,该视图似乎从未被告知其尺寸layout()

    int childViewWidth = childView.getWidth ();
    int childViewHeight = childView.getHeight ();
Run Code Online (Sandbox Code Playgroud)

(上述代码检索到的维度是 0,0。)

上述所有代码都是线性发生的,并且是从我的 Activity 子类的onCreate()方法中调用的。

我正在测试的布局 XML 是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" …
Run Code Online (Sandbox Code Playgroud)

layout android view

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

标签 统计

android ×2

google-app-engine ×1

jinja2 ×1

layout ×1

preference ×1

view ×1

xml ×1