2014-12-04 2 views
3

Я разрабатываю небольшую игру с libgdx, и в своем экране я хотел бы иметь ярлык (завернутый в таблицу), в котором была бы нажата текстовая ссылка (подчеркнута или с другой цвет), как это:LIBGDX: добавьте интерактивную текстовую ссылку

Вы можете просмотреть код здесь

here

Edit:

То, что я попытался это:

HorizontalGroup monGroup = new HorizontalGroup(); 
Label howRotationRep = new Label("They have been based on the information provided on this ", new Label.LabelStyle(game.petiteFont, Color.WHITE)); 
howRotationRep.setWrap(true); 
howRotationRep.setWidth(tailleCell); 

Label test = new Label(" site", new Label.LabelStyle(game.petiteFont, Color.RED)); 
test.addListener(new ClickListener(){ 
@Override 
public void clicked(InputEvent event, float x, float y) { 

    Gdx.net.openURI("http://tetrisconcept.net/wiki/SRS"); 

} 
}); 
monGroup.addActor(howRotationRep); 
monGroup.addActor(test); 
table.add(monGroup).left().width(tailleCell); 

И это дает мне это

this

ответ

0

Вы можете сделать это с помощью двух различных scene2d этикетки, как «вы можете просмотреть код» и «здесь» и установить кнопку слушателю второй. Вы можете просто изменить цвет этикетки «здесь» и поместите его в соответствии с первым положением меток, как с помощью следующего кода pseduo:

label2.x = label1.x + label1.getTextWidth(); 
label2.y = label1.y; 
5

Если вам нужна только часть этикетки Clickable, я думаю, что лучший способ реализации у этого есть два ярлыка, это должно работать:

Label lblReviewCode = new Label("You can review the code ", skin); 
    Label lblReviewCodeLink = new Label("here", skin, "linkstyle"); 
    // If you don't want to provide a custom style... 
    //Label lblReviewCodeLink = new Label("here", skin); 
    lblReviewCodeLink.addListener(new ClickListener(){ 
     @Override 
     public void clicked(InputEvent event, float x, float y) { 
      Gdx.net.openURI("https://bitbucket.org/batman3000/batris"); 
     } 
    }); 
    // If you didn't provided the style, you can at least paint it blue by doing this... 
    //lblReviewCodeLink.setColor(Color.BLUE); 

    HorizontalGroup codeLink = new HorizontalGroup(); 
    codeLink.addActor(lblReviewCode); 
    codeLink.addActor(lblReviewCodeLink); 

    table.add(codeLink); 
+0

Спасибо за ваш ответ, но я уже пробовал это, и он не работает, если добавление ширины двух меток превышает ширину таблицы, что здесь имеет место. Кроме того, ярлык должен быть обернут так, чтобы его можно было отобразить на нескольких строках, потому что у меня есть длинное предложение для написания, а не просто «вы можете просмотреть код здесь». Кроме того, даже если метки достаточно короткие, когда я добавляю их в горизонтальную группу, они находятся друг над другом (накладываются друг на друга) (извините за мой плохой английский). Я не знаю, что делать? –

Смежные вопросы