gpt4 book ai didi

java - 如何在 Activity 中设置 ScrollView 的最大高度?

转载 作者:行者123 更新时间:2023-11-30 10:19:13 25 4
gpt4 key购买 nike

我想达到的目标:具有所属 xml 布局的 java Activity ,用户可以在其中输入所有玩家的姓名。这是它的样子:

preview

如果您单击加号按钮,您可以输入另一个玩家(Spieler 在德语中表示玩家)。在达到最大高度之前,它应该是一个环绕 View 。

我在这里发现了一个非常相似的问题: How to set a maximum height with wrap content in android?

有注释给出的代码:“您可以将其添加到任何 View (在从 View 继承的类中覆盖 onMeasure)”

这是我的问题: 我属于 xml 布局的 java 文件继承自 Activiy,因此不知道 super.onMeasure() 方法。你有什么建议吗?我可以将 Activity-java-file 和 View-java-file 用于一个布局吗?非常感谢!

最佳答案

您必须创建一个扩展 ScrollView 的自定义 View ,然后在您的 xml 中使用该 View

        public class ScrollViewWithMaxHeight extends ScrollView {

public static int WITHOUT_MAX_HEIGHT_VALUE = -1;

private int maxHeight = WITHOUT_MAX_HEIGHT_VALUE;

public ScrollViewWithMaxHeight(Context context) {
super(context);

init(context, null, 0, 0);
}

public ScrollViewWithMaxHeight(Context context, AttributeSet attrs) {
super(context, attrs);
init(context, attrs, 0, 0);
}

public ScrollViewWithMaxHeight(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context, attrs, defStyle, 0);
}
private void init(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes){
TypedArray a = context.getTheme().obtainStyledAttributes(
attrs, R.styleable.custom_ScrollViewWithMaxHeight, defStyleAttr, defStyleRes);
maxHeight =
a.getDimensionPixelSize(R.styleable.max_height,maxHeight);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
try {
int heightSize = MeasureSpec.getSize(heightMeasureSpec);
if (maxHeight != WITHOUT_MAX_HEIGHT_VALUE
&& heightSize > maxHeight) {
heightSize = maxHeight;
}
heightMeasureSpec = MeasureSpec.makeMeasureSpec(heightSize, MeasureSpec.AT_MOST);
getLayoutParams().height = heightSize;
} catch (Exception e) {
LogManager.error(this, "onMesure", "Error forcing height", e);
} finally {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}

public void setMaxHeight(int maxHeight) {
this.maxHeight = maxHeight;
}
}

您还必须在您的值文件夹中创建一个 attrs.xml 文件并将其添加到其中。

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<declare-styleable name="custom_ScrollViewWithMaxHeight">
<attr name="max_height" format="dimension" />
</declare-styleable>
</resources>

然后您可以像这样引用 View

<the.package.where.the.view.is.ScrollViewWithMaxHeight
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:max_height="150dp">
</the.package.where.the.view.is.ScrollViewWithMaxHeight>

关于java - 如何在 Activity 中设置 ScrollView 的最大高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48743907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com