小编Ale*_*lex的帖子

在 android.widget.ImageView 上找不到参数类型为 int 的属性“android:layout_width”的设置器

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 android-databinding

9
推荐指数
2
解决办法
8074
查看次数

在片段中使用数据绑定时出现异常:“指定的孩子已经有一个父级。您必须先在子级的父级上调用 removeView()”

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)

android android-fragments android-databinding

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

Android Studio 3.0.1.在Android模拟器上工作非常慢

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)

当我在设备上运行我的应用程序--->一切正常.尼斯.

但是当我开始使用这个模拟器(API 27)时: AVD

一切都很慢.

这是我的任务管理器(当模拟器启动时).

任务管理器

因为你可以只有638 MB

我怎么解决这个问题?

android-emulator android-studio-3.0

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

Moxy:如何将参数传递给Presenter?

这是我执行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 android-moxy

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

网格布局。如何设置列之间的空间?

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 android-gridlayout

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

数据绑定:不调用onClick方法

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)

android-databinding

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