У меня есть настраиваемое представление, которое в основном просто, чтобы показать некоторую информацию для сделки, это расположение:вес LinearLayout не работает в DialogFragment
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:background="#a8d1ff"
android:weightSum="8">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:orientation="vertical"
android:weightSum="6">
<FrameLayout
android:id="@+id/leftPartRowOneRelativeLayout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3">
<ImageView
android:id="@+id/nzNumberImageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="fitXY"
android:src="@drawable/transaction_view_leftupside_nz_test" />
<TextView
android:id="@+id/nzNumberTextView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="right"
android:text="18"
android:textSize="40dp" />
</FrameLayout>
<ImageView
android:id="@+id/productNumberImageView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3"
android:adjustViewBounds="true"
android:scaleType="fitXY"
android:src="@drawable/transaction_view_leftdownside_product_test" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/trx_summary_LinearLayout"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="6"
android:weightSum="10"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3"
android:textSize="20dp"
android:textColor="#FF000000"
android:id="@+id/palceHolder0" android:text="testRow0"/>
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3"
android:textSize="20dp"
android:textColor="#FF000000"
android:id="@+id/palceHolder1" android:text="testRow1"/>
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="4"
android:textSize="20dp"
android:textColor="#FF000000"
android:id="@+id/palceHolder2" android:text="testRow2"/>
</LinearLayout>
</LinearLayout>
Это его, как он выглядит в Android Studio просмотра, и это отвечают мои ожидания (левый и правый разделим полный родительский контейнер с соотношении 2: 6):
Позже эта точка зрения будет показано в DialogFragment
, и это onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
для DialogFragment
:
MyView mv = new MyView(getActivity().getBaseContext());
mv.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
return mv;
Но теперь, вес 2: 6 кажется не работать больше в всплывающем Dialog
:
Я использую Android 6.
Может ли кто-нибудь помочь?
[edit0]: Я хочу Dialog
шоу в ширину экрана, но половину высоты экрана, поэтому я ставлю этот код в MyDialogFragment
:
@Override
public void onResume() {
ViewGroup.LayoutParams params = getDialog().getWindow().getAttributes();
params.width = ViewGroup.LayoutParams.MATCH_PARENT;
params.height = this.height;
getDialog().getWindow().setAttributes((android.view.WindowManager.LayoutParams) params);
super.onResume();
}
что this.height
передаваемая bundle
, который является screen height/2
.
Я установил 'Match_Parent' как код, который вы вставили, но я не буду устанавливать его для' Dialog', потому что я не хочу, чтобы окно диалога занимало весь экран, я просто хочу сделать его полуэкранным высота. И я провел тестирование, результат все тот же. – Shawn
@Shawn Можете ли вы установить фиксированную ширину/высоту (например, '300dp' или около того) на представление? Если это решает проблему веса, вы можете вычислить соответствующий размер для диалога во время выполнения и установить его как его ширину/высоту. – Floern
Я пробовал 'mv.setLayoutParams (новый ViewGroup.LayoutParams (900, 300));' как вы и предполагали, но все тот же – Shawn