【问题标题】:Android : Layout width gets automatically changed to wrap_content from match_parentAndroid:布局宽度从 match_parent 自动更改为 wrap_content
【发布时间】:2022-08-14 03:11:37
【问题描述】:

我已将布局宽度设置为 \"match_parent\",并且可以在 Design & Blueprint 中将其视为匹配父宽度,但在执行期间布局宽度会自动更改为 \"wrap_content\"。

有人可以帮助解释我的代码有什么问题吗? 布局代码:

    <?xml version=\"1.0\" encoding=\"utf-8\" ?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id=\"@+id/mainLayout\"
    android:layout_width=\"match_parent\"
    android:layout_height=\"match_parent\"
    android:layout_marginTop=\"?attr/actionBarSize\"
    android:background=\"@color/purple_200\"
    android:orientation=\"vertical\"
    tools:context=\".view.diary.DiaryViewFragment\">

        <androidx.core.widget.NestedScrollView
            android:layout_width=\"match_parent\"
            android:layout_height=\"match_parent\"
            app:layout_constraintBottom_toBottomOf=\"parent\"
            app:layout_constraintEnd_toEndOf=\"parent\"
            app:layout_constraintStart_toStartOf=\"parent\"
            app:layout_constraintTop_toTopOf=\"parent\">

            <com.google.android.material.textview.MaterialTextView
                android:id=\"@+id/detailsTextView\"
                android:layout_width=\"match_parent\"
                android:layout_height=\"match_parent\"
                android:layout_marginBottom=\"?attr/actionBarSize\"
                android:scrollbars=\"vertical\" />
        </androidx.core.widget.NestedScrollView>

</androidx.constraintlayout.widget.ConstraintLayout>

分段:

package com.ramvastechnologies.myday.view.diary;

import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.textview.MaterialTextView;
import com.ramvastechnologies.myday.R;
import com.ramvastechnologies.myday.databinding.DiaryViewFragmentBinding;
import com.ramvastechnologies.myday.model.diary.DiaryEntry;
import com.ramvastechnologies.myday.viewmodel.diary.DiarySharedViewModel;

import java.util.concurrent.atomic.AtomicInteger;

public class DiaryViewFragment extends Fragment {

    private DiarySharedViewModel mDiarySharedViewModel;

    public DiaryViewFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View diaryViewScreen = inflater.inflate(R.layout.diary_view_fragment,container,false);
        return diaryViewScreen;
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        mDiarySharedViewModel = new ViewModelProvider(requireActivity()).get(DiarySharedViewModel.class);

        AtomicInteger diaryItemId = new AtomicInteger(DiaryViewFragmentArgs.fromBundle(getArguments()).getUid());

        DiaryEntry currentDiaryItem = mDiarySharedViewModel.getClikedDiaryItem(diaryItemId.get());

        StringBuffer display = new StringBuffer();
        display.append(currentDiaryItem.getDiaryDate()).append(\"\\n\").append(currentDiaryItem.getDiaryTitle()).append(\"\\n\")
                        .append(currentDiaryItem.getDiaryDetails());

        MaterialTextView diaryView = (MaterialTextView)view.findViewById(R.id.detailsTextView);
        diaryView.setText(display.toString());

    }

}

Layout displayed in Design & Blueprint

Display showing layout width = wrap_content

谢谢 美居

    标签: android-layout


    【解决方案1】:

    我自己发现了这个问题。在我的 activity_main.xml 中,FragmentContainerView 布局宽度和高度设置为“wrap_content”。我已将它们更改为“match_parent”并且应用程序开始正确显示。

    【讨论】:

      猜你喜欢
      • 2017-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多