Я использую scrollBy () для RelativeLayout, чтобы попытаться прокрутить до кнопок справа от видимого экрана, но я вижу только пустой экран.
Кнопки на границе экрана обрезаются и остаются прокрученными после прокрутки (в любом направлении).
Я пробовал почти каждую комбинацию WRAP CONTENT и FILL PARENT в параметрах относительного размещения.
Я также пытался использовать LinearLayout в setContentview (), он не работал.
Мне нужно, чтобы представление прокручивалось по горизонтали, и приложение всегда должно быть в горизонтальном режиме.
Нужно ли каким-либо образом перерисовывать или обновлять макет, чтобы отображались отсутствующие кнопки?
Нужно ли использовать какой-либо другой тип представления для такой функциональности?
Спасибо за любой вклад.
* 1015 Натан *
Вот весь код сверху вниз до конца onCreate ():
package golfcaddy.tools;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
public class GolfScoreRel extends Activity implements OnClickListener {
// Settings file, preferences
public static final String PREFS_NAME = "golfscore";
public static final String PREFS_SCORES = "scores";
public static final String PREFS_BACKGROUND_IMAGE = "backimage";
SharedPreferences mSettings;
private int currentX = 0;
private int currentY = 0;
int numHoles = 0;
int numplayers = 0;
RelativeLayout r1;
LinearLayout lin;
public int mLastScoreEntered;
//manages unique ID's for all view inside Relative layouts
int viewCount = 1;
// int holeScoresFront[] = new int[9];
// int holeScoresFrontb[] = new int[9];
Button mLastClicked;
Button exitButton;
TextView pTotal1;
TextView pTotal2;
@Override
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// lin = new LinearLayout(this);
// lin.setOrientation(LinearLayout.VERTICAL);
/* not used yet....
GolfPlayer p1 = new GolfPlayer("P 1");
GolfPlayer p2 = new GolfPlayer("P 2");
GolfPlayer p3 = new GolfPlayer("P 3");
GolfPlayer p4 = new GolfPlayer("P 4");
*/
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
r1 = new RelativeLayout(this); // this layout will be set for contentview
r1.setLayoutParams(params);
numplayers = 4; //standard golf group
numHoles = 18; //standard golf round
r1.addView(createCard(numplayers,numHoles));
setContentView(r1);
} //end oncreate
вот мой код r1.scrollBy (), который я где-то позаимствовал:
Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
currentX = (int) event.getRawX();
currentY = (int) event.getRawY();
break;
}
case MotionEvent.ACTION_MOVE: {
int x2 = (int) event.getRawX();
int y2 = (int) event.getRawY();
r1.scrollBy(currentX - x2 , currentY - y2);
currentX = x2;
currentY = y2;
break;
}
case MotionEvent.ACTION_UP: {
break;
}
}
return true;
}
Примечания к снимкам экрана: мы должны увидеть еще 8 кнопок справа.
Последний снимок показывает карту 5 игроков с зажатой кнопкой DEBUG.
Черт, как новый пользователь, я не могу публиковать изображения. попробуйте просмотреть их здесь: http://groups.yahoo.com/group/nateandroiddev/photos/album/776905892/pic/list?mode=tn&order=ordinal&start=1&dir=asc