RelativeLayout で scrollBy() を使用して、表示されている画面の右側にあるボタンにスクロールしようとしていますが、空白の画面しか表示されません。画面の境界線上のボタンが切り取られ、スクロールした後も (任意の方向に) 切り取られたままになります。
私は、relativelayout パラメータで WRAP CONTENT と FILL PARENT のほぼすべての組み合わせを試しました。
また、setContentview() で LinearLayout を使用しようとしましたが、機能しませんでした。
ビューを水平方向にスクロールする必要があり、アプリは常に横向きモードに設定されています。
欠落しているボタンを表示できるようにするには、何らかの方法でレイアウトを再描画または更新する必要がありますか?
この種の機能には他のビュー タイプを使用する必要がありますか?
ご意見ありがとうございます。
-ネイサン
上から 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 つのボタンが表示されるはずです。
最後のショットは、DEBUG ボタンが切り取られた 5 人のプレイヤー カードを示しています。
ダン、新しいユーザーとして、私は画像を投稿することを許可されていません. ここで表示してみてください: http://groups.yahoo.com/group/nateandroiddev/photos/album/776905892/pic/list?mode=tn&order=ordinal&start=1&dir=asc