以编程方式设置AppBarLayout子级的minHeight

时间:2019-11-27 16:38:37

标签: android android-appbarlayout

我想要实现的是类似于CollapsingToolbar的东西。我的活动有以下布局。

var image = new ol.style.Circle({ radius: 10, fill: new ol.style.Fill({color: 'green'}) }); var styles = { 'Point': new ol.style.Style({ image: image }) }; var styleFunction = function(feature) { return styles[feature.getGeometry().getType()]; }; var geojsonObject = { 'type': 'FeatureCollection', 'crs': { 'type': 'name', 'properties': { 'name': 'EPSG:3857' } }, 'features': [{ 'type': 'Feature', 'geometry': { 'type': 'Point', 'coordinates': ol.proj.fromLonLat([2,4]) } } ] }; var vectorSource = new ol.source.Vector({ features: (new ol.format.GeoJSON()).readFeatures(geojsonObject) }); var vector = new ol.layer.Vector({ source: vectorSource, style: styleFunction }); var view = new ol.View({ center: [0,0], zoom: 2, maxZoom: 17 }); var map = new ol.Map({ layers: [ new ol.layer.Tile({ source: new ol.source.OSM() }) , vector ], target: 'carte', view: view }); var image2 = new ol.style.Circle({ radius: 10, fill: new ol.style.Fill({color: 'red'}) }); var styles2 = { 'Point': new ol.style.Style({ image: image2 }) }; var styleFunction2 = function(feature) { return styles2[feature.getGeometry().getType()]; }; // interaction on "click" var selectClick = new ol.interaction.Select({ condition: ol.events.condition.click, toggleCondition: ol.events.condition.click, style: styleFunction2 }); var changeInteraction = function() { map.addInteraction(selectClick); }; changeInteraction(); 中的项目可以具有可变的高度。因此,我试图从AppBarLayout的{​​{1}}方法中以编程方式设置项目的minHeight

但是,以编程方式设置minHeight似乎没有任何效果。 AppBarLayout确实会完全滚动出屏幕。在XML内部直接设置minHeight会产生预期的结果,并阻止AppBarLayout滚动到屏幕之外。

我错过了什么吗,还是无法以编程方式设置minHeight?

onPreDraw()
ViewTreeObserver.OnPreDrawListener

2 个答案:

答案 0 :(得分:1)

尝试改用setMinimumHeight(minHeight)-这样就可以解决问题。

答案 1 :(得分:0)

AppBarLayout appBarLayout =(AppBarLayout)findViewById(R.id.app_bar); appBarLayout.setMinimumHeight(100);

您尝试过吗?