gpt4 book ai didi

java - Android ViewPager 不显示我的所有布局元素

转载 作者:行者123 更新时间:2023-12-01 15:41:07 26 4
gpt4 key购买 nike

我正在使用正在 inflated layout 的 ViewPager。 ViewPager 可以工作,我可以来回滑动,但我正在膨胀的布局仅部分加载。在我的示例中,只出现了我的RelativeLayout,没有出现其他内容。我可以确认我的布局有效,因为当我不使用 ViewPager 时,一切都显示正常。

这是我正在膨胀的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" android:background="#FFFFFF">
<RelativeLayout
android:id="@+id/header"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="0"
android:background="#000000" >

<ImageView
android:id="@+id/batteryImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:src="@drawable/battery" />

<ImageView
android:id="@+id/exit_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:src="@drawable/exit_button" />

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@+id/batteryImageView"
android:text="76%" />
</RelativeLayout>



<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/score"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:padding="3dp" >

<View
android:id="@+id/dynamic_background_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

<LinearLayout
android:id="@+id/topHorizontalLinearLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >

<LinearLayout
android:id="@+id/prominentDisplayLinearLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical" >

<TextView
android:id="@+id/scoreLabelTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Blast Factor"
android:textSize="30dp" />

<TextView
android:id="@+id/scoreTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="-35dp"
android:gravity="top|center_horizontal"
android:text="100"
android:textSize="125dp" />
</LinearLayout>

<LinearLayout
android:id="@+id/prominentVerticalLinearLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="5dp"
android:layout_marginTop="10dp"
android:layout_weight="2"
android:orientation="vertical" >

<LinearLayout
android:id="@+id/averageLinearLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

<TextView
android:id="@+id/averageLabel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="#55000000"
android:gravity="center"
android:text="Average"
android:textSize="13dp" />

<TextView
android:id="@+id/averageScore"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="100"
android:textSize="50dp" />
</LinearLayout>

<LinearLayout
android:id="@+id/lastLinearLayout"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
android:id="@+id/lastLabel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#55000000"
android:gravity="center"
android:text="Last"
android:textSize="13dp" />

<TextView
android:id="@+id/lastScore"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="100"
android:textSize="50dp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>

<LinearLayout
android:id="@+id/demotedDisplayLinearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<FrameLayout
android:id="@+id/leftPanelFrame"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp" >

<LinearLayout
style="@style/MotionMetrics.ScorePanel"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#55000000" >

<ImageView
android:id="@+id/leftPanelImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/swingspeed" />

<TextView
android:id="@+id/leftPanelLabelTextView"
style="@style/MotionMetrics.ScoreHeader"
android:text="Swing Speed" />

<TextView
android:id="@+id/leftPanelTextView"
style="@style/MotionMetrics.ScoreValue"
android:layout_width="match_parent"
android:text="92" />
</LinearLayout>

<ImageView
android:id="@+id/leftPanelSelectionArrow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:src="@drawable/select_arrow" />
</FrameLayout>

<FrameLayout
android:id="@+id/middlePanelFrame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginRight="2dp"
android:layout_weight="1"
android:background="#55000000" >

<LinearLayout
style="@style/MotionMetrics.ScorePanel"
android:layout_width="match_parent"
android:layout_height="wrap_content" >

<ImageView
android:id="@+id/middlePanelImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ballspeed" />

<TextView
android:id="@+id/middlePanelLabelTextView"
style="@style/MotionMetrics.ScoreHeader"
android:text="Ball Speed" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="top|center_horizontal"
android:orientation="horizontal" >

<TextView
android:id="@+id/middlePanelTextView"
style="@style/MotionMetrics.ScoreValue"
android:text="1.3" />
</LinearLayout>
</LinearLayout>

<View
android:layout_width="35dp"
android:layout_height="match_parent"
android:background="@drawable/score_border" />

<ImageView
android:id="@+id/middlePanelSelectionArrow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:src="@drawable/select_arrow" />
</FrameLayout>

<FrameLayout
android:id="@+id/rightPanelFrame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginRight="2dp"
android:layout_weight="1"
android:background="#55000000" >

<ImageView
android:id="@+id/rightPanelSelectionArrow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:src="@drawable/select_arrow" />

<LinearLayout
style="@style/MotionMetrics.ScorePanel"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<ImageView
android:id="@+id/rightPanelImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/distance" />

<TextView
android:id="@+id/rightPanelLabelTextView"
style="@style/MotionMetrics.ScoreHeader"
android:text="Distance" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="top|center_horizontal"
android:orientation="horizontal" >

<TextView
android:id="@+id/rightPanelTextView"
style="@style/MotionMetrics.ScoreValue"
android:text="7.6" />
</LinearLayout>
</LinearLayout>

<View
android:id="@+id/view1"
android:layout_width="35dp"
android:layout_height="match_parent"
android:background="@drawable/score_border" />
</FrameLayout>
</LinearLayout>
</LinearLayout>
</FrameLayout>

<LinearLayout
android:id="@+id/buttonBar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0" >

<Button
android:id="@+id/blastButton"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:text="Blast" android:layout_weight="1"/>

<Button
android:id="@+id/angleButton"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:text="Angle" android:layout_weight="1"/>

<Button
android:id="@+id/timingButton"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:text="Timing" android:layout_weight="1"/>
</LinearLayout>

<ImageView
android:id="@+id/tabBarImageView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/tabbar"/>

</LinearLayout>

这是具有 ViewPager 的主布局,并将扩展上述布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<android.support.v4.view.ViewPager
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/scorePager"/>

</LinearLayout>

这是我的 ViewPagerAdapter 代码:

private class ScorePagerAdapter extends PagerAdapter{


@Override
public int getCount() {
return NUM_PAGES;
}

/**
* Create the page for the given position. The adapter is responsible
* for adding the view to the container given here, although it only
* must ensure this is done by the time it returns from
* {@link #finishUpdate()}.
*
* @param container The containing View in which the page will be shown.
* @param position The page position to be instantiated.
* @return Returns an Object representing the new page. This does not
* need to be a View, but can be some other container of the page.
*/
@Override
public Object instantiateItem(View collection, int position) {
/*TextView tv = new TextView(cxt);
tv.setText("Bonjour PAUG " + position);
tv.setTextColor(Color.GREEN);
tv.setTextSize(30);

((ViewPager) collection).addView(tv,0);

return tv;*/

LayoutInflater inflater = (LayoutInflater)cxt.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.score, null);
updateDisplay(score, position, view);

((ViewPager) collection).addView(view,0);

return view;
}

/**
* Remove a page for the given position. The adapter is responsible
* for removing the view from its container, although it only must ensure
* this is done by the time it returns from {@link #finishUpdate()}.
*
* @param container The containing View from which the page will be removed.
* @param position The page position to be removed.
* @param object The same object that was returned by
* {@link #instantiateItem(View, int)}.
*/
@Override
public void destroyItem(View collection, int position, Object view) {
//((ViewPager) collection).removeView((TextView) view);
((ViewPager) collection).removeView((View) view);
}



@Override
public boolean isViewFromObject(View view, Object object) {
//return view==((TextView)object);
return view==((View)object);
}


/**
* Called when the a change in the shown pages has been completed. At this
* point you must ensure that all of the pages have actually been added or
* removed from the container as appropriate.
* @param container The containing View which is displaying this adapter's
* page views.
*/
@Override
public void finishUpdate(View arg0) {}


@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {}

@Override
public Parcelable saveState() {
return null;
}

@Override
public void startUpdate(View arg0) {}

}

最后 updateDisplay() 包含了我想要显示的所有 UI 元素:

private void updateDisplay(final BlastScore score, int viewId, View layout) {
final TextView scoreTextView = (TextView) layout.findViewById(R.id.scoreTextView);
final TextView scoreLabelTextView = (TextView) layout.findViewById(R.id.scoreLabelTextView);

int blastScore = score.getBlastScore();

// animateScore();

// Swing Speed UI
final TextView leftPanelTextView = (TextView) layout.findViewById(R.id.leftPanelTextView);
final TextView leftPanelLabelTextView = (TextView) layout.findViewById(R.id.leftPanelLabelTextView);
final ImageView leftPanelImageView = (ImageView) layout.findViewById(R.id.leftPanelImageView);
final ImageView leftPanelSelectionArrow = (ImageView) layout.findViewById(R.id.leftPanelSelectionArrow);


// Ball Speed UI
final TextView middlePanelTextView = (TextView) layout.findViewById(R.id.middlePanelTextView);
final TextView middlePanelLabelTextView = (TextView) layout.findViewById(R.id.middlePanelLabelTextView);
final ImageView middlePanelImageView = (ImageView) layout.findViewById(R.id.middlePanelImageView);
final ImageView middlePanelSelectionArrow = (ImageView) layout.findViewById(R.id.middlePanelSelectionArrow);

最佳答案

将您的RelativeLayout(标题)的layout_weight设置为1,并将您的FrameLayout(分数)的layout_weight设置为0。

权重为0意味着它保证得到它所要求的东西,并且由于它的高度是match_parent,所以RelativeLayout正在得到一切。

关于java - Android ViewPager 不显示我的所有布局元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8022705/

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