在此代码中,某些项目最初是不可见的。我希望点击按钮在我们放置它们的位置时可以看到它们。
为了给他们留出空间,当隐藏的选项可见时,我已将其他项目放在将要显示的位置。
我的问题是当其他项目不可见时,public class Splash extends Activity {
SharedPreferences sharedpreferences;
boolean splash;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
sharedpreferences = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
splash = sharedpreferences.getBoolean("Splash", false);
if (splash == true) {
Intent mainIntent = new Intent(Splash.this, MainActivity.class);
startActivity(mainIntent);
}
else
{
setContentView(R.layout.splash);
//animation
ImageView imageView = (ImageView) findViewById(R.id.imageView);
Animation alpha = AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.fade_in);
imageView.startAnimation(alpha);
alpha.setAnimationListener((new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Start your activity here.
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putBoolean("Splash", true);
Intent mainIntent = new Intent(Splash.this, MainActivity.class);
Splash.this.startActivity(mainIntent);
Splash.this.finish();
}
}));
}
}
}
不遵守代码中设置的以下单元格位置。
GridLayout
输出:
当所有项目都可见时:
当隐藏其他两个项目时,import QtQuick 2.4
import QtQuick.Window 2.2
import QtQuick.Layouts 1.1
Window {
visible: true
height: 500; width: 500
GridLayout {
id: gridLayout
property bool secondScreenOptionsVisible: false
property int hmmiButtonRow: 0
property int hmmiButtonCol: 0
Rectangle {
id: hmmi; visible: gridLayout.secondScreenOptionsVisible
Layout.row: gridLayout.hmmiButtonRow; Layout.column: gridLayout.hmmiButtonCol;
height: 50; width: 50; color: "pink";
Layout.alignment: Qt.AlignTop
Text { text: "HMMI"; anchors.centerIn: parent }
}
property int optionsButtonRow: 1
property int optionsButtonCol: 0
Rectangle {
id: optionsButton; visible: gridLayout.secondScreenOptionsVisible
Layout.row: gridLayout.optionsButtonRow; Layout.column: gridLayout.optionsButtonCol;
height: 50; width: 50; color: "red"
Layout.alignment: Qt.AlignTop
Text { text: "Options..."; anchors.centerIn: parent }
}
property int flipperControlRow: 3
property int flipperControlCol: 0
Rectangle {
id: flipperControl;
Layout.row :gridLayout.flipperControlRow; Layout.column: gridLayout.flipperControlCol;
height: 200; width: 50;
color: "brown";
Layout.rowSpan: 4
Layout.alignment: Qt.AlignTop
Text { text: "Flipper"; anchors.centerIn: parent }
}
}
}
不遵守规则。
我希望GridLayout
能够遵守我设定的单元格位置,无论其他项目是否可见。
请帮忙。
答案 0 :(得分:3)
文档说GridLayout
:
[...]它类似于基于小部件的QGridLayout。 GridLayout元素的所有可见子元素都属于布局。 [...]。
因此,您所看到的是开发人员遵循的实施方法的直接后果。实际上,可见性的变化会触发Item
的重新定位,如this代码路径中所示。
您可以使用visible
属性而不是考虑opacity
属性:布局会考虑非不透明Item
,从而产生预期的可见行为。例如,参见这个简单的例子:
import QtQuick 2.4
import QtQuick.Window 2.2
import QtQuick.Layouts 1.1
Window {
visible: true
height: 400; width: 400
GridLayout {
anchors.fill: parent
id: gridLayout
rows: 3
columns: 3
Repeater {
id: rep
model: 9
Rectangle {
color: "black"
Layout.preferredWidth: 100
Layout.preferredHeight: 100
Layout.alignment: Qt.AlignCenter
opacity: index === rep.count - 1
}
}
}
}
请注意,非透明Item
仍会呈现,与不可见的SELECT *
FROM tblname
Order By datecol,status
不同,对性能有不同程度的影响,具体取决于您的实际使用情况。