每次单击按钮时,我都试图创建一个新的FrameLayout。目前,我已经手动实现了3个FrameLayout,当我单击按钮时,所有3个都设置为可见。我现在想要的只是将一个FrameLayout设置为可见,然后再次单击该按钮,第二个FrameLayout出现,依此类推。java代码:
public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "com.example.viginti.MESSAGE";
int hoursValue;
int minutesValue;
int finalMinutes;
int finalHours;
int correctDivision;
int timeLeft;
int twentyFour;
int i, x;
NumberPicker np_hours;
NumberPicker np_minutes;
@Override
protected void onCreate( Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_main );
fillArray();
}
@Override
public boolean onCreateOptionsMenu( Menu menu ) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate( R.menu.main, menu );
return true;
}
public void generateAnswer( View view ) {
hoursValue = np_hours.getValue();
minutesValue = np_minutes.getValue();
try {
twentyFour = 24;
correctDivision = 10;
finalMinutes = minutesValue / correctDivision;
finalHours = twentyFour - hoursValue;
timeLeft = finalHours - finalMinutes;
} catch( NumberFormatException e ) {
/** DEBUGGING */
System.out.println( "Number Format Exception: " + e );
}
String finalResult = Integer.toString( timeLeft );
Intent displayData = new Intent( this, DisplayData.class );
displayData.putExtra( EXTRA_MESSAGE, finalResult );
startActivity( displayData );
}
public void fillArray() {
np_hours = ( NumberPicker ) findViewById( R.id.hourNumber );
np_minutes = ( NumberPicker ) findViewById( R.id.minuteNumber );
String[] hoursArray = new String[25];
String[] minutesArray = new String[61];
for( i = 0; i < hoursArray.length; i++ ) {
hoursArray[i] = Integer.toString( i );
}
for( x = 0 ; x < minutesArray.length; x++ ){
minutesArray[x] = Integer.toString( x );
}
np_hours.setMinValue( 0 );
np_hours.setMaxValue( 24 );
np_hours.setWrapSelectorWheel( false );
np_hours.setDisplayedValues( hoursArray );
np_minutes.setMinValue( 0 );
np_minutes.setMaxValue( 60 );
np_minutes.setWrapSelectorWheel( false );
np_minutes.setDisplayedValues( minutesArray );
}
@SuppressLint("NewApi")
public void adActivity( View view ) {
//Add first frame
FrameLayout addActivities = ( FrameLayout )findViewById( R.id.frameLayout2 );
addActivities.setVisibility( View.VISIBLE );
//Add second frame
FrameLayout addActivities1 = ( FrameLayout )findViewById( R.id.frameLayout3 );
addActivities1.setVisibility( View.VISIBLE );
//Add third frame
FrameLayout addActivities2 = ( FrameLayout )findViewById( R.id.frameLayout4 );
addActivities2.setVisibility( View.VISIBLE );
fillArray();
}
}
XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<ImageView
android:id="@+id/featuredimage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="18dp"
android:clickable="true"
android:onClick="generateAnswer"
android:scaleType="centerCrop"
android:src="@drawable/generate_button" />
<ImageView
android:id="@+id/addActivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginBottom="50dp"
android:clickable="true"
android:onClick="adActivity"
android:src="@drawable/add_activity" />
<FrameLayout
android:id="@+id/frameLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<Spinner
android:id="@+id/plan"
android:layout_width="121dp"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:layout_marginTop="15dp"
android:entries="@array/daily_plans" />
<NumberPicker
android:id="@+id/hourNumber"
android:layout_width="40dp"
android:layout_height="70dp"
android:layout_marginLeft="24dp"/>
<NumberPicker
android:id="@+id/minuteNumber"
android:layout_width="40dp"
android:layout_height="70dp"
android:layout_marginLeft="10dp" />
</LinearLayout>
</FrameLayout>
<FrameLayout
android:id="@+id/frameLayout2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/frameLayout1"
android:visibility="gone">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<Spinner
android:id="@+id/plan1"
android:layout_width="121dp"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:layout_marginTop="15dp"
android:entries="@array/daily_plans" />
<NumberPicker
android:id="@+id/hourNumber"
android:layout_width="40dp"
android:layout_height="70dp"
android:layout_marginLeft="24dp"/>
<NumberPicker
android:id="@+id/minuteNumber"
android:layout_width="40dp"
android:layout_height="70dp"
android:layout_marginLeft="10dp" />
</LinearLayout>
</FrameLayout>
<FrameLayout
android:id="@+id/frameLayout3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/frameLayout2"
android:visibility="gone">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<Spinner
android:id="@+id/plan1"
android:layout_width="121dp"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:layout_marginTop="15dp"
android:entries="@array/daily_plans" />
<NumberPicker
android:id="@+id/hourNumber"
android:layout_width="40dp"
android:layout_height="70dp"
android:layout_marginLeft="24dp"/>
<NumberPicker
android:id="@+id/minuteNumber"
android:layout_width="40dp"
android:layout_height="70dp"
android:layout_marginLeft="10dp" />
</LinearLayout>
</FrameLayout>
<FrameLayout
android:id="@+id/frameLayout4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/frameLayout3"
android:visibility="gone">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<Spinner
android:id="@+id/plan1"
android:layout_width="121dp"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:layout_marginTop="15dp"
android:entries="@array/daily_plans" />
<NumberPicker
android:id="@+id/hourNumber"
android:layout_width="40dp"
android:layout_height="70dp"
android:layout_marginLeft="24dp"/>
<NumberPicker
android:id="@+id/minuteNumber"
android:layout_width="40dp"
android:layout_height="70dp"
android:layout_marginLeft="10dp" />
</LinearLayout>
</FrameLayout>
</RelativeLayout>
值得一提的是,我是Android开发的新手。另外,如果每次单击按钮时都有一种更好的生成FrameLayouts的方法(并正确放置它们),我很想听听!
非常感谢您的帮助!
最佳答案
如果解决方案符合您的要求,则没有任何问题。实际上,我喜欢您的解决方案,而不是通过编程方式添加小部件,因为,
您可以将它们放置在您想要一切进行的位置,并使其完成
在视觉编辑器中看起来不错;
您可以使用不同的资源(例如样式,尺寸,布局和可绘制对象)来使其看起来更好
不同的屏幕;
您可以为风景和平板电脑创建不同的布局;
同时,您可以轻松地在代码中连接小部件(因为您已经在XML文件中为其指定了ID)。
对于无法将其放置在小屏幕上的情况,您可能需要将其全部放在滚动视图中。