在app/build.gradle:
dataBinding {
enabled = true
}
kapt "com.android.databinding:compiler:3.0.1"
Run Code Online (Sandbox Code Playgroud)
在布局中我有两个图像。
我只想为第一张图像设置宽度。
这是 XML 布局:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="com.myproject.android.customer.util.GuiUtil" />
</data>
<ImageView
android:id="@+id/imageViewPhoto"
android:layout_width="@{GuiUtil.getTileWidthDpInScreen(context), default=@dimen/preview_image_height}"
android:layout_height="@dimen/preview_image_height"/>
<ImageView
android:id="@+id/imageViewFavorite"
android:layout_width="28dp"
android:layout_height="28dp"/>
</layout>
Run Code Online (Sandbox Code Playgroud)
这是适配器的代码:
@BindingAdapter("layout_width")
public static void setLayoutWidth(View view, int width) {
ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
layoutParams.width = width;
view.setLayoutParams(layoutParams);
}
Run Code Online (Sandbox Code Playgroud)
这是方法GuiUtil.getTileWidthDpInScreen:
public class GuiUtil {
public static int getTileWidthDpInScreen(Context context) {
// some logic that return int value
}
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误:
:app:transformDataBindingWithDataBindingMergeArtifactsForDebug UP-TO-DATE
:app:kaptDebugKotlin
e: …Run Code Online (Sandbox Code Playgroud) Android Studio 3.1,Java 1.8
我尝试使用数据绑定:
这里settings.xml布局:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="handler"
type="com.myproject.SettingsFragment" />
</data>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.constraint.ConstraintLayout
android:id="@+id/contentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.constraint.ConstraintLayout
android:id="@+id/contactUsContainer"
android:layout_width="match_parent"
android:layout_height="50dp"
android:onClick="@{handler::onClickContactUs}">
<ImageView
android:id="@+id/contactUsImageView"
android:layout_width="28dp"
android:layout_height="28dp"
app:srcCompat="@drawable/ic_settings_contacts_us"
<TextView
android:id="@+id/contactUsTextView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/contact_us"/>
</android.support.constraint.ConstraintLayout>
</android.support.constraint.ConstraintLayout>
</FrameLayout>
</ScrollView>
</android.support.constraint.ConstraintLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)
这里片段SettingsFragment.java:
public class SettingsFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
SettingsBinding binding = DataBindingUtil.setContentView(getActivity(), R.layout.settings);
binding.setHandler(this);
return …Run Code Online (Sandbox Code Playgroud) Windows 10(64位)
处理器:Intel Core 3.10 GHz
RAM 8GB
Android Studio 3.0.1
Java 1.8
Gradle 4.1.
在c:\ Users\myuser.AndroidStudio3.0\studio64.exe.vmoptions中
# custom Android Studio VM options, see https://developer.android.com/studio/intro/studio-config.html
-server
-Xms256m
-Xmx3g
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djna.nosys=true
-Djna.boot.library.path=
-da
Run Code Online (Sandbox Code Playgroud)
在gradle.properties中:
org.gradle.jvmargs=-Xmx1536m
Run Code Online (Sandbox Code Playgroud)
当我在设备上运行我的应用程序--->一切正常.尼斯.
一切都很慢.
这是我的任务管理器(当模拟器启动时).
因为你可以只有638 MB
我怎么解决这个问题?
这是我执行MVP的方法:
public class OfferDetailsPdfActivity extends AppCompatActivity implements OnPageChangeListener, OfferDetailsPdfMvp.View {
private PdfPresenterImpl presenter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int offerId = 0;
if (extras != null) {
offerId = extras.getInt(Offer.ID);
}
presenter = PdfPresenterImpl.getInstance(this, offerId);
}
Run Code Online (Sandbox Code Playgroud)
现在我想使用Moxy。
所以这里改变活动
public class OfferDetailsPdfActivity extends MvpAppCompatActivity implements OnPageChangeListener, OfferDetailsPdfMvp.View {
@InjectPresenter
PdfPresenterImpl presenter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int offerId = 0;
if (extras != null) {
offerId = extras.getInt(Offer.ID);
}
// how pass parameter …Run Code Online (Sandbox Code Playgroud) Android Studio 3.1、Java 1.8、Gradle 4.1
我使用 GridLayout。一切正常。但我需要在列之间和行之间设置空间(例如 10dp)。我怎么能做到这一点?
主文件:
<GridLayout
android:id="@+id/categoriesContainer"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:verticalSpacing="10dp"
app:layout_constraintEnd_toEndOf="@+id/birthDateContainer"
app:layout_constraintStart_toStartOf="@+id/birthDateContainer"
app:layout_constraintTop_toBottomOf="@+id/birthDateContainer">
</GridLayout>
Run Code Online (Sandbox Code Playgroud)
profile_category_active.xml
<?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">
<android.support.constraint.ConstraintLayout
android:id="@+id/profileCategoryContainer"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/categoryNameTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginEnd="30dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="30dp"
android:layout_marginStart="5dp"
android:layout_marginTop="5dp"
android:ellipsize="end"
android:maxLines="1"
android:text="TextView" />
</android.support.constraint.ConstraintLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)
活动:我以编程方式添加行:
GridLayout gridLayout = findViewById(R.id.categoriesContainer);
gridLayout.setColumnCount(columnCount);
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
for (int index = 0; index < 10; index++) {
View profileCategoryActive = inflater.inflate(R.layout.profile_category_active, null, false);
categoriesGridContainer.addView(profileCategoryActive);
ConstraintLayout profileCategoryContainer = profileCategoryActive.findViewById(R.id.profileCategoryContainer); …Run Code Online (Sandbox Code Playgroud) Android 4.3以上
我试图使用数据绑定。我从这里使用官方文档数据绑定
因此在app / build.gradle中:
dataBinding {
enabled = true
}
Run Code Online (Sandbox Code Playgroud)
在我的xml布局文件中:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="handler"
type="com.myproject.SettingsFragment" />
</data>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.constraint.ConstraintLayout
android:id="@+id/contentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.constraint.ConstraintLayout
android:id="@+id/contactUsContainer"
android:layout_width="match_parent"
android:onClick="@{handler::onClickContactUs}">
<TextView
android:id="@+id/contactUsTextView"
android:layout_width="0dp"
android:layout_height="wrap_content"/>
</android.support.constraint.ConstraintLayout>
</android.support.constraint.ConstraintLayout>
</FrameLayout>
</ScrollView>
</android.support.constraint.ConstraintLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)
这是我的片段SettingsFragment.java:
public class SettingsFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.settings, container, …Run Code Online (Sandbox Code Playgroud)