小编MHo*_*gge的帖子

ViewDataBinding getVariable?

两个主要问题是:

  • 为什么ViewDataBinding没有这样的方法getVariable("variableName")会查找变量并返回它,如果不存在具有此名称的变量,则返回null.
  • 他们以任何方式/解决方法来实现这种行为吗?

所以更明确一点:如果我不知道我的ViewDataBinding的类型,是他们获取变量的方法还是我必须知道它的类型?


以下是它的实际工作方式:

  1. 我有一个名为my_layout.xml的布局:
<layout>
    <data>
        <variable
            android:name="myVaribale"
            android:type="String"/>
        </variable>
    </data>

    <RelativeLayout
        android:id="@+id/root_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="@{myVariable}"/>

    </RelativeLayout>
<layout>
Run Code Online (Sandbox Code Playgroud)
  1. 我给它的ViewDataBinding实例充气:

    MyLayoutBinding binding = (MyLayoutBinding) DataBindingUtil.inflate(inflater, R.layout.my_layout, root, false);  

  2. 我可以通过调用适当的方法来获取它的变量:

    String myVariable = binding.getMyVariable(); 

因此,这是如何让一个变量时,我们知道是什么类型的的ViewDataBinding.


我的问题在这里:

让我们想象一下我有3个布局叫my_layout_1,my_layout_2,my_layout_3和那些3个布局被包围<layout>标记.这3个布局也有相同的变量(myVariable).

所以这里是布局:

my_layout_1

<layout>

    <data>
        <variable
            android:name="myVariable"
            android:type="String"/>
        </variable>
    </data>

    <RelativeLayout
        android:id="@+id/root_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent" …
Run Code Online (Sandbox Code Playgroud)

android android-databinding

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

使用Gradle将应用程序模块依赖项添加到Android Studio中的另一个应用程序模块中

是否可以有2个应用程序模块(apply plugin: 'com.android.application'位于它们的gradle文件的开头),并且其中一个模块依赖于另一个模块?

因此,模块A将依赖于模块B,并且两者都是应用程序。

dependencies {
    ...
    compile project(':moduleB')
}
Run Code Online (Sandbox Code Playgroud)

我可以轻松地添加此依赖项,并且没有错误/警告出现,但是我仍然无法访问moduleB中的源文件。Android Stduio仍然建议我“将依赖项添加到moduleB”,当我这样做时,仅重新同步gradle并没有任何反应。

我试图包括对库模块的依赖关系,并且工作正常。我们不能在两个(更多)应用程序模块之间添加依赖项吗?

dependencies android module gradle

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

在Fragment附加到FragmentManager之前,不能执行onGetLayoutInflater()

我有时会得到一个Exception并带有以下消息:

在Fragment附加到FragmentManager之前,不能执行onGetLayoutInflater()

我的完整堆栈跟踪(使用CompositeAndroid作为父片段):

Fatal Exception: java.lang.IllegalStateException: onGetLayoutInflater() cannot be executed until the Fragment is attached to the FragmentManager.
       at android.support.v4.app.Fragment.getLayoutInflater(Fragment.java:1151)
       at com.pascalwelsch.compositeandroid.fragment.CompositeFragment.super_getLayoutInflater(CompositeFragment.java:1310)
       at com.pascalwelsch.compositeandroid.fragment.FragmentDelegate$7.call(FragmentDelegate.java:204)
       at com.pascalwelsch.compositeandroid.fragment.FragmentDelegate$7.call(FragmentDelegate.java:197)
       at com.pascalwelsch.compositeandroid.fragment.FragmentPlugin.getLayoutInflater(FragmentPlugin.java:149)
       at com.pascalwelsch.compositeandroid.fragment.FragmentPlugin.getLayoutInflater(FragmentPlugin.java:1269)
       at com.pascalwelsch.compositeandroid.fragment.FragmentDelegate$7.call(FragmentDelegate.java:202)
       at com.pascalwelsch.compositeandroid.fragment.FragmentDelegate$7.call(FragmentDelegate.java:197)
       at com.pascalwelsch.compositeandroid.fragment.FragmentDelegate.getLayoutInflater(FragmentDelegate.java:208)
       at com.pascalwelsch.compositeandroid.fragment.CompositeFragment.getLayoutInflater(CompositeFragment.java:163)
       at android.support.v4.app.Fragment.onGetLayoutInflater(Fragment.java:1101)
       at com.pascalwelsch.compositeandroid.fragment.CompositeFragment.super_onGetLayoutInflater(CompositeFragment.java:1710)
       at com.pascalwelsch.compositeandroid.fragment.FragmentDelegate$32.call(FragmentDelegate.java:769)
       at com.pascalwelsch.compositeandroid.fragment.FragmentDelegate$32.call(FragmentDelegate.java:762)
       at com.pascalwelsch.compositeandroid.fragment.FragmentPlugin.onGetLayoutInflater(FragmentPlugin.java:528)
       at com.pascalwelsch.compositeandroid.fragment.FragmentPlugin.onGetLayoutInflater(FragmentPlugin.java:1456)
       at com.pascalwelsch.compositeandroid.fragment.FragmentDelegate$32.call(FragmentDelegate.java:767)
       at com.pascalwelsch.compositeandroid.fragment.FragmentDelegate$32.call(FragmentDelegate.java:762)
       at com.pascalwelsch.compositeandroid.fragment.FragmentDelegate.onGetLayoutInflater(FragmentDelegate.java:773)
       at com.pascalwelsch.compositeandroid.fragment.CompositeFragment.onGetLayoutInflater(CompositeFragment.java:538)
       at android.support.v4.app.Fragment.performGetLayoutInflater(Fragment.java:1132)
       at android.support.v4.app.Fragment.getLayoutInflater(Fragment.java:1117)
       at com.my.app.features.event.EventDetailFragment.attachHeader(EventDetailFragment.java:66)
       ...
Run Code Online (Sandbox Code Playgroud)

我们在这里可以看到,我们首先getLayoutInflater()在第1117行调用该方法,然后在第1151行调用该方法.

第一个就是这个:

/**
 * Returns the cached LayoutInflater used to inflate …
Run Code Online (Sandbox Code Playgroud)

android android-inflate android-fragments

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

设置FAB边框颜色

这篇文章可能是重复的,但我想做的是制作一个浮动动作按钮(FAB)(来自设计支持库),黑色背景和边框与我的主要颜色颜色相同.

我已经阅读了这个问题所示的@vipul_asri的答案.

但是,当我将"透明"颜色替换为黑色(或任何其他颜色)时,这会将我的FAB的背景更改为backgroundTint也没有边框的颜色.

将边框放在FAB按钮上是否很难?有谁知道怎么可能实现这个目标?

提前感谢您的回答.

android border-color floating-action-button

7
推荐指数
0
解决办法
1210
查看次数

Android DataBinding layout_width:您必须提供layout_width属性

我试图绑定我的视图的宽度和高度,但我看不出问题出在哪里.

我发现这个谷歌问题

要为您的应用程序实现这些,请创建绑定适配器:

@BindingAdapter("android:layout_width")
public static void setLayoutWidth(View view, int width) {
  LayoutParams layoutParams = view.getLayoutParams();
  layoutParams.width = width;
  view.setLayoutParams(layoutParams);
}
Run Code Online (Sandbox Code Playgroud)

所以我创建了我的绑定适配器,如下所示:

public class SimpleBindingAdapter {

    @BindingAdapter("android:layout_width")
    public static void setLayoutWidth(View view, int width) {
        ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
        layoutParams.width = width;
        view.setLayoutParams(layoutParams);
    }

    @BindingAdapter("android:layout_height")
    public static void setLayoutHeight(View view, int height) {
        ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
        layoutParams.height = height;
        view.setLayoutParams(layoutParams);
    }

    //Others methods...
}
Run Code Online (Sandbox Code Playgroud)

然后尝试设置我的宽度和高度,如下所示:

<View
        android:layout_width="@{paramsMessage.width}"
        android:layout_height="@{paramsMessage.height}"
... />
Run Code Online (Sandbox Code Playgroud)

其中paramsMessage.width是一个public int属性.

但我得到这个错误:

引起:java.lang.RuntimeException:二进制XML文件行#25:您必须提供layout_width属性.在android.view.View.View的View.Avray.View.View.St上的android.content.res.TypedArray.getLayoutDimension(TypedArray.java:607)以及android.view.ViewGroup $ $ MarginLayoutParams.(ViewGroup.java:6930)在android.widget.RelativeLayout $ …

android width android-layout android-databinding

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

yii2 datepicker使用javascript禁用日期

我重写了我的问题:

我正在使用Kartick DatePicker来显示日期选择器.在这个日期选择器上,我想使用javascript禁用日期.这是我有的:

<?= DatePicker::widget([
    'name' => 'mydate',
          'language' => 'fr',
          'clientOptions' => [
              'autoclose' => true,
              'format' => 'dd-M-yyyy'
          ]
  ]);?>
Run Code Online (Sandbox Code Playgroud)

随着JS:

 $(function(){
     $("#w0").datepicker("setDatesDisabled", ['25-08-2017']);
});
Run Code Online (Sandbox Code Playgroud)

我试图将日期的格式更改为2017/08/2508/25/2017但在任何情况下都不会在日志中显示任何内容.

我也尝试使用kvDatepicker()而不是,datepicker()但这给了我

未捕获的TypeError:$(...).kvDatepicker不是函数

这里有什么问题的任何线索?谢谢.

javascript jquery datepicker yii2

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

解决来自 am session 的冲突

我想从一个存储库中挑选多个提交到另一个。我按照此 Stack Overflow 帖子中提供的说明进行操作:

/path/to/2 $ git --git-dir=/path/to/1/.git format-patch --stdout sha1^..sha1 | git am -3
Run Code Online (Sandbox Code Playgroud)

并且发生了冲突:

Applying: commit-name-xxx
fatal: sha1 information is lacking or useless (path/to/conflicted/file).
error: could not build fake ancestor
Patch failed at 0001 commit-name-xxx
The copy of the patch that failed is found in: .git/rebase-apply/patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, …
Run Code Online (Sandbox Code Playgroud)

git git-am git-merge-conflict

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

自动调整TextView以在画布上绘制

我试着在上面显示一些文字PDF document.此文本可能很长或很短,但应该在一行上.这就是我选择TextViewCompat.setAutoSizeTextTypeWithDefaults实用程序方法的原因,但是在绘制时它似乎不起作用canvas.文本被裁剪而不是减少.

这是我的代码:

PageInfo startingPageInfo = new Builder(STANDARD_PDF_PAGE_WIDTH, STANDARD_PDF_PAGE_HEIGHT, 1).create();
final Page startingPage = document.startPage(startingPageInfo);

Canvas canvas = startingPage.getCanvas();
canvas.save();

final TextView documentTitle = new TextView(this);
TextViewCompat.setAutoSizeTextTypeWithDefaults(documentTitle, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);
documentTitle.setLines(1);
documentTitle.setText(String.format("%s - %s", category.getName(), period));
documentTitle.setTextSize(TypedValue.COMPLEX_UNIT_SP, 56);
documentTitle.setTypeface(null, BOLD);
documentTitle.setTextColor(Color.BLACK);

int measuredWidth = MeasureSpec.makeMeasureSpec(canvas.getWidth() - 100, MeasureSpec.EXACTLY);
int measuredHeight = MeasureSpec.makeMeasureSpec(100, MeasureSpec.EXACTLY);
documentTitle.measure(measuredWidth, measuredHeight);
documentTitle.layout(0, 0, measuredWidth, measuredHeight); 

canvas.translate(titleDx, titleDy);
documentTitle.draw(canvas);
Run Code Online (Sandbox Code Playgroud)

我对Android内部的自定义视图感到不舒服,所以我可能在这里做错了,任何帮助都会受到赞赏.

android textview android-canvas

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

合并数组并保持排序

笔记

该问题已根据 @Kaddath 的好建议进行了编辑,以强调排序不必按字母顺序排列,而是取决于数组内项目的位置。


我有一个数组数组,其中每个数组都基于给定的顺序,但它们可能略有不同。

例如,基本排序是X -> D -> H -> B,这是我的数组:

const arrays = [
  ['X', 'D', 'H', 'B'],
  ['X', 'D', 'K', 'Z', 'H', 'B', 'A'],
  ['X', 'M', 'D', 'H', 'B'],
  ['X', 'H', 'T'],
  ['X', 'D', 'H', 'B']
]
Run Code Online (Sandbox Code Playgroud)

我想将所有数组合并为一个数组并删除重复项,但保持排序。在我的示例中,结果将是['X', 'M', 'D', 'K', 'Z', 'H', 'T', 'B', 'A'].

在示例中,我们可以看到M位于第三个数组之间X和内部,并且它被放置在最终输出中和之间。DXD

我知道可能会出现冲突,但这里有以下规则:

  • 每个项目都应该出现在最终输出中。
  • 如果一个项目出现在多个数组的不同位置,则第一个出现的就是正确的(跳过其他)。

到目前为止我所做的是将所有这些数组合并为一个数组,方法是使用

const merged = [].concat.apply([], arrays);
Run Code Online (Sandbox Code Playgroud)

(参见/sf/answers/760552971/)。

然后使用/sf/answers/110906421/中的代码片段获取唯一值: …

javascript arrays topological-sort

6
推荐指数
2
解决办法
7297
查看次数

使用ssh协议加前缀时拒绝ssh权限

我尝试在我的GitLab帐户中添加一个ssh密钥,以便通过npm使用它.

我在https://docs.gitlab.com/ee/ssh/之后添加了我的密钥.

ssh -T git@gitlab.com
Run Code Online (Sandbox Code Playgroud)

工作正常并发送消息欢迎使用Gitlab,用户名.

但是ssh -T ssh://git@gitlab.com没有工作,并给我这个错误信息:

权限被拒绝(publickey).

当我npm install在我的节点项目上运行时,我将节点模块作为依赖项添加到package.json文件中,它返回以下错误:

npm ERR! Error while executing:
npm ERR! /usr/bin/git ls-remote -h -t ssh://git@gitlab.com/myproject/myproject.git
npm ERR!
npm ERR! Permission denied (publickey).
npm ERR! fatal: Could not read from remote repository.
npm ERR!
npm ERR! Please make sure you have the correct access rights
npm ERR! and the repository exists.
npm ERR!
npm ERR! exited with error code: 128
Run Code Online (Sandbox Code Playgroud)

我在里面添加了我的依赖package.json …

ssh command-line

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