如果屏幕尺寸较小且屏幕尺寸较大,则我想要一个可以具有最小高度或wrap_content的视图,然后占用剩余的空间。这个观点是其父母的中间孩子。
目前,我正在使用LinearLayout的重量。它可以在大屏幕下正常工作,但在小屏幕上却没有显示视图。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/speaker_detail_background"
android:clickable="true"
android:paddingLeft="@dimen/padding_7dp"
android:paddingRight="@dimen/padding_7dp"
android:orientation="vertical"
>
<ImageView
android:id="@+id/down_arrow_image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:padding="@dimen/padding_15dp"
android:src="@drawable/down_arrow_icon" />
<RelativeLayout
android:id="@+id/lytSpeakerDetails"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/down_arrow_image_view"
android:minHeight="200dp"
android:layout_weight="1"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true">
<RelativeLayout
android:id="@+id/title_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:visibility="visible"
>
<com.harman.jblconnectplus.ui.customviews.CustomFontTextView
android:id="@+id/speaker_name_title_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@android:color/transparent"
android:drawableLeft="@drawable/edit_name"
android:drawablePadding="@dimen/padding_5dp"
android:ellipsize="end"
android:maxLength="16"
android:text="@string/speaker_name"
android:textColor="@android:color/white"
android:textSize="@dimen/textSize_18sp"
app:font="@string/font_name_opensans_semi"
/>
<com.harman.jblconnectplus.ui.customviews.CustomFontTextView
android:id="@+id/setting_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/speaker_name_title_textview"
android:layout_centerHorizontal="true"
android:text="@string/setting"
android:visibility="invisible"
android:textColor="@color/white"
android:textSize="14sp"
app:font="@string/font_name_opensans_semi"
/>
</RelativeLayout>
<LinearLayout
android:id="@+id/lytSeekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_below="@id/title_bar"
android:layout_marginLeft="@dimen/brightness_margin"
android:layout_marginRight="@dimen/brightness_margin"
android:visibility="visible">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/darker"
android:layout_gravity="center_vertical"
/>
<SeekBar
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:id="@+id/seekBar"
android:thumb="@drawable/knob"
android:progressDrawable="@drawable/seekbar_progressbar"
android:indeterminate="false"
android:splitTrack="false"
android:maxHeight="3dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:progress="0"
android:secondaryProgress="0"
android:max="255"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/brighter"
android:layout_gravity="center_vertical"/>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:id="@+id/bottom_details_layout"
android:layout_height="wrap_content"
android:background="@drawable/round_border_white_bg"
android:orientation="vertical"
android:layout_marginTop="@dimen/margin_20dp"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/padding_5dp"
android:gravity="bottom">
<include layout="@layout/speaker_detail_firmware_layout" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="@color/divider_view" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include layout="@layout/speaker_detail_voice_layout" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
请建议。
答案 0 :(得分:1)
我解决了这个问题。设定重量&#34; 1&#34; XML文件中的布局(在我的文件中) case XML与上面给出的相同),它适用于if screen size很大,如果视图的大小较小,也会检查语法 比最小尺寸,然后语法设置视图高度。样品 代码: -
将ViewTreeObserver设置为View: -
lytSpeakerDetails = (RelativeLayout) view.findViewById(R.id.lytSpeakerDetails);
ViewTreeObserver viewTreeObserver = lytSpeakerDetails.getViewTreeObserver();
viewTreeObserver.addOnGlobalLayoutListener(globalLayoutListener);
并在Listener的回调中检查布局高度是否小于最小值,然后将高度设置为最小值: -
ViewTreeObserver.OnGlobalLayoutListener globalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (!isAdded())
return;
lytSpeakerDetails.getViewTreeObserver().removeGlobalOnLayoutListener(this);
int height = lytSpeakerDetails.getMeasuredHeight();
LinearLayout.LayoutParams imgViewParams = (LinearLayout.LayoutParams) lytSpeakerDetails.getLayoutParams();
/* imgViewParams.setMargins(0, (int) ( x * 1.5f) + (int) getResources().getDimension(R.dimen.card_shadow_y), 0, (int) x );
lytSpeakerDetails.setLayoutParams(imgViewParams);*/
if(height < (int)getResources().getDimension(R.dimen.brightness_minimum_height)) {
LinearLayout.LayoutParams rel_btn = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, (int) getResources().getDimension(R.dimen.brightness_minimum_height));
lytSpeakerDetails.setLayoutParams(rel_btn);
}
}
};
答案 1 :(得分:0)
您的View
受到限制。如果minHeight
受到约束,则无法保证View
被尊重。请参阅documentation。
机器人:了minHeight
定义视图的最小高度。不保证视图能够达到此最小高度(例如,如果其父布局以较低的可用高度约束它)。
也许ScrollView
可以使用,因为它可以为您提供几乎无限的空间。问题是当空间成为一个问题而一切都不合适时,你想要发生什么。