sak*_*ony 5 data-binding android include
我有一个布局包括一些布局。其中一个有一个progressBar,我想使用数据绑定访问它,但我不能。
<?xml version="1.0" encoding="utf-8"?>
<layout 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"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:splitMotionEvents="true"
tools:context="jp.co.sakony.activities.DiaryNewArticleActivity"
>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
style="@style/ToolBar"
/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ScrollView
android:id="@+id/diary_new_article_scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/margin_medium"
android:layout_marginRight="@dimen/margin_medium"
android:orientation="vertical"
android:splitMotionEvents="true"
>
<jp.co.sakony.views.contents.InputFieldDescriptionView
android:id="@+id/diary_new_article_input_title_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_medium"
app:input_field_maxLength="@integer/diary_new_article_title_max_length"
app:input_field_required="true"
app:input_field_title="@string/diary_new_article_input_title"
/>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="-10dp"
app:counterEnabled="true"
app:counterMaxLength="@integer/diary_new_article_title_max_length"
app:counterTextAppearance="@style/counterText"
app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout"
>
<jp.co.sakony.views.APEditText
android:id="@+id/diary_new_article_input_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:maxLength="@integer/diary_new_article_title_max_length"
android:maxLines="1"
android:textCursorDrawable="@drawable/shape_edit_cursor_orange"
app:textLineColor="@color/orange"
/>
</android.support.design.widget.TextInputLayout>
<jp.co.sakony.views.contents.InputFieldDescriptionView
android:id="@+id/diary_new_article_input_body_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_medium"
app:input_field_maxLength="@integer/diary_new_article_body_max_length"
app:input_field_required="true"
app:input_field_title="@string/diary_new_article_input_body"
/>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="-10dp"
app:counterEnabled="true"
app:counterMaxLength="@integer/diary_new_article_body_max_length"
app:counterTextAppearance="@style/counterText"
app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout"
>
<jp.co.sakony.views.APEditText
android:id="@+id/diary_new_article_input_body"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLength="@integer/diary_new_article_body_max_length"
android:scrollbars="vertical"
android:textCursorDrawable="@drawable/shape_edit_cursor_orange"
app:textLineColor="@color/orange"
/>
</android.support.design.widget.TextInputLayout>
<jp.co.sakony.views.contents.InputFieldDescriptionView
android:id="@+id/diary_new_article_input_allow_comment_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_medium"
app:input_field_explanation="@string/diary_new_article_input_allow_comment_explanation1"
app:input_field_required="true"
app:input_field_title="@string/diary_new_article_input_allow_comment"
/>
<android.support.v7.widget.SwitchCompat
android:id="@+id/diary_new_article_input_allow_comment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_medium"
android:background="@drawable/selector_comment_reply_background"
android:checked="true"
android:padding="@dimen/margin_small"
android:text="@string/diary_new_article_allow_comment_switch_on"
android:textSize="@dimen/font_small"
android:theme="@style/AllowCommentSwitch"
/>
</LinearLayout>
</ScrollView>
<include layout="@layout/toolbar_shadow"/>
<include
layout="@layout/progress_bar_masked"
android:id="@+id/progress"
/>
</FrameLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
progress_bar_masked.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout
android:id="@+id/progressbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/transparent_grey"
android:clickable="true"
>
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
style="?android:attr/progressBarStyle"
/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
活动
abstract public class BaseDiaryArticleActivity extends AppCompatActivity implements View.OnClickListener, TextWatcher,
DialogOkCancelFragment.DialogOKCancellCallback {
protected ActivityBaseDiaryArticleBinding mBinding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_base_diary_article);
// can't find progressbar.
mBinding.progress.progressbar
}
Run Code Online (Sandbox Code Playgroud)
mBinding.progress 返回视图。但我认为它应该返回 ProgressBarMaskedBinding。
更新
我解决了这个问题。
progress_bar_masked.xml 在一个库项目中。现在我将此布局移动到应用程序项目中并且它正在工作。也许这是一个数据绑定错误,不是吗?
Geo*_*unt 13
你必须给你的包含一个 ID:
<include android:id="@+id/toolShadow" layout="@layout/toolbar_shadow"/>
Run Code Online (Sandbox Code Playgroud)
然后通过包含的绑定访问包含的布局中的视图:
mBinding.toolShadow.progressbar.setProgress(100);
Run Code Online (Sandbox Code Playgroud)
您必须将包含的视图包装在layout标签中
<layout xmlns:android="http://schemas.android.com/apk/res/android">
</layout>
Run Code Online (Sandbox Code Playgroud)
然后你可以访问它们,ActivityMainBinding.parentview.innerview;
希望它可以帮助某人。